我正在编写一个bash脚本,我想检查文件的类型。 让我们说我有一个包含不同文件的目录。我想检查每个文件,看看它是什么类型。
我需要一些能告诉我的命令:"好的,这个文件是一个目录" 或者"这个文件是管道"或"此文件是链接"等等。
答案 0 :(得分: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
查看更多file test operators(感谢birryree的链接)
答案 1 :(得分:1)
ls -la
告诉你关于他们的一切,你只需要检查第一个字符。 e.g:
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
答案 2 :(得分:0)
您可能还想查看file命令。