我正在编写一个 bash 脚本,我想检查文件的类型。假设我有一个包含不同文件的目录。我想检查每个文件,看看它是什么类型。
我需要一些命令来告诉我:“好的,这个文件是一个目录”或“这个文件是管道”或“这个文件是链接”等。
您可以像这样测试文件:
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 提供的链接)
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
您可能还想检查文件命令。