Linux bash脚本告诉我文件的类型

时间:2013-04-10 15:17:06

标签: bash file types

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

我需要一些能告诉我的命令:"好的,这个文件是一个目录" 或者"这个文件是管道"或"此文件是链接"等等。

3 个答案:

答案 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命令。