1

我正在编写一个 bash 脚本,我想检查文件的类型。假设我有一个包含不同文件的目录。我想检查每个文件,看看它是什么类型。

我需要一些命令来告诉我:“好的,这个文件是一个目录”或“这个文件是管道”或“这个文件是链接”等。

4

3 回答 3

4

您可以像这样测试文件:

if [ -f $file ]
then
   echo "File is an ordinary file"
else
   echo "This is special file"
fi

if [ -d $file ]
then
   echo "File is a directory"
else
   echo "File is not a directory"
fi

if [ -s $file ]
then
   echo "File size is zero"
else
   echo "File size is not zero"
fi

if [ -e $file ]
then
   echo "File exists"
else
   echo "File does not exist"
fi

if [ -L $file ]
then
   echo "File is a link"
else
   echo "File is not a link"
fi

查看更多文件测试操作符(感谢 birryree 提供的链接)

于 2013-04-10T15:24:40.220 回答
1
ls -la

告诉你所有关于它们的信息,你只需要检查第一个字符。例如:

lrwxrwxrwx  1 kent kent  12 Apr  8 18:54 imlink -> /fpath/foo
-rw-r--r--  1 kent kent 242 Apr 10 16:40 file
drwxr-xr-x  2 kent kent  40 Apr 10 17:21 d/  

在上面的例子中

l: link
-: file
d: dir

你也可以写这个 awk 行:

ls -la | awk '{t=(/^d/?"Directory":/^-/?"File":/^l/?"Link":"unknown");print $NF "---"  t}'

它会输出如下内容:

d/---Directory
file---File
./.gitignore---Link
outputaa---File
于 2013-04-10T15:23:38.443 回答
0

您可能还想检查文件命令。

于 2013-04-10T16:21:55.600 回答