ディレクトリ(gif、png、jpg、jpeg)からすべての画像ファイルを見つける必要があります。
find /path/to/ -name "*.jpg" > log
.jpgファイルだけでなく、この文字列を変更する方法は?
find /path/to -regex ".*\.\(jpg\|gif\|png\|jpeg\)" > log
find /path/to/ -iname '*.gif' -o -iname '*.jpg' -o -iname '*.png' -o -iname '*.jpeg'
働くでしょう。もっとエレガントな方法があるかもしれません。
find -E /path/to -regex ".*\.(jpg|gif|png|jpeg)" > log
-E
を使用すると、正規表現の括弧とパイプをエスケープする必要がなくなります。
find /path/to/ -type f -print0 | xargs -0 file | grep -i image
これは、file
コマンドを使用して、ファイル名(または拡張子)に関係なく、ファイルの種類を認識しようとします。
/path/to
またはファイル名に文字列image
が含まれる場合、上記は偽のヒットを返す可能性があります。その場合、私はお勧めします
cd /path/to
find . -type f -print0 | xargs -0 file --mime-type | grep -i image/
上記の@Dennis Williamsonの応答の補足として、同じ正規表現でファイル拡張子の大文字と小文字を区別しないようにするには、-iregexを使用します。
find /path/to -iregex ".*\.\(jpg\|gif\|png\|jpeg\)" > log
find /path -type f \( -iname "*.jpg" -o -name "*.jpeg" -o -iname "*gif" \)
Mac OSで使用する
find -E packages -regex ".*\.(jpg|gif|png|jpeg)"
find -regex ".*\.\(jpg\|gif\|png\|jpeg\)"