web-dev-qa-db-ja.com

スクリプトでファイルの種類を確認する方法

ディレクトリ内のすべての画像に対してループを実行したい。画像には拡張子がないため、画像の最初のバイトを読み取ってそのタイプを知る必要があります。ループは最終的には次のようになるはずです。

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

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

編集する

caseを使用せず、_ bash を使用したifステートメントを使用する場合:

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