如何检查脚本中的文件类型

如何检查脚本中的文件类型

我想对目录中的所有图像进行循环。图像没有扩展名,因此我必须读取图像的第一个字节才能知道其类型。循环最终应该是这样的。

for file in *
do
    if [ file --mime-type -b ]
    then
        ***
    fi
done

答案1

使用该case语句和命令替换:

for file in *; do
    case $(file --mime-type -b "$file") in
        image/*g)        ... ;;
        text/plain)      ... ;;
        application/xml) ... ;;
        application/zip) ... ;;
        *)               ... ;;
    esac
done

查看 :
http://mywiki.wooledge.org/BashFAQ/002
http://mywiki.wooledge.org/CommandSubstitution
http://mywiki.wooledge.org/BashGuide/TestsAndConditionals#Choices
http://wiki.bash-hackers.org/syntax/ccmd/case

编辑

如果你坚持不使用caseif声明使用

if [[ $(file --mime-type -b "$file") == image/*g ]]; then
...
else
...
fi 

相关内容