2013-05-26 1 views
31

この巨大なアーカイブには、.jpg、.gif、.pngなどの多くの種類のグラフィックイメージがあります。すべてのタイプはわかりません。ドット拡張名に関係なく、すべてのグラフィックイメージをリストすることができるようにするための方法はありますか?ありがとう!Linux find:findですべてのグラフィックイメージファイルをリストしますか?

+1

すべての拡張機能でfindを呼び出すbashスクリプトを作成する必要があります。 –

+0

ファイルの種類を知っている 'file'コマンドと何らかの形で組み合わされますか? – Edward

答えて

39

これはトリック

find . -name '*' -exec file {} \; | grep -o -P '^.+: \w+ image' 

出力例実行する必要があります。

./navigation/doc/Sphärische_Trigonometrie-Dateien/bfc9bd9372f650fd158992cf5948debe.png: PNG image 
./navigation/doc/Sphärische_Trigonometrie-Dateien/6564ce3c5b95ded313b84fa918b32776.png: PNG image 
./navigation/doc/subr_1.jpe: JPEG image 
./navigation/doc/Astroanalytisch-Dateien/Gamma.gif: GIF image 
./navigation/doc/Astroanalytisch-Dateien/deltaS.jpg: JPEG image 
./navigation/doc/Astroanalytisch-Dateien/GammaBau.jpg: JPEG image 
+1

ビデオにも同様のアプローチがありますか? "image"を "video"に置き換えると、quicktimeとMatroskaの形式がスキップされるようです... –

+1

@ElderGeek私はいくつかの例でファイルを実行し、grepできるテキストがあるかどうかを確認します。 awkソリューションのイメージセクションでは、/ video | image | foo /のようにパターンを別々に分けることができます。video、image、またはfooという単語をファイルからすべて含むファイルが返されます。 – f3xy

+0

GIF画像やJPEG画像を取り除く方法についてのアイデアはありますが、ファイル名とパス名をそのまま残しておけば、出力として別のコマンドに渡すことはできますか? – VaTo

10
find . -type f -exec file {} \; | grep -o -P '^.+: \w+ image' 

はさらに良くする必要があります。

+1

? – Selah

20

私のケースでは、このファイルのリストを別のプログラムにパイプしたかったので、以下の方が良いと思います。

find . -type f -exec file {} \; | awk -F: '{if ($2 ~/image/) print $1}' 
+0

出力をパイプしたい場合、これは本当にデフォルトの答えです。ありがとう! –

3

「画像」のみを対象にしたり、awkを使用したりすることはできません。 PSDファイルは大文字「I」の「Image」によって識別されるので、大文字小文字を区別しないか、大文字Iを含めるように正規表現を改善する必要があります。EPSファイルには「image」という単語はまったく含まれませんあなたが望むものに応じて、 "EPS"または "Postscript"にもマッチする必要があります。だからここに私の改良版である:同じ問題に関連

find . -type f -exec file {} \; | awk -F: '{ if ($2 ~/[Ii]mage|EPS/) print $1}' 
-1

、私はちょうどphotofindhttps://github.com/trimap/photofind)と呼ばれるツールを発表しました。通常の検索コマンドのように動作しますが、画像ファイルに特化しており、画像ファイルに格納されているEXIF情報に基づいて結果のフィルタリングもサポートしています。詳細は、リンクされたgithub-repoを参照してください。

+2

ソリューションへのリンクは歓迎しますが、あなたの答えがそれなしで役に立つことを確認してください:[リンクの前後にコンテキストを追加](http://meta.stackexchange.com/a/8259)ターゲットページが利用できない場合にリンクするページの最も関連性の高い部分を引用します。 [リンク以上の回答は削除されるかもしれません](http://stackoverflow.com/help/deleted-answers)。 – mrun

+0

このリンクは質問に答えるかもしれませんが、答えの本質的な部分をここに含めて参考にしてください。リンクされたページが変更された場合、リンクのみの回答は無効になります。 - [レビューから](レビュー/低品質の投稿/ 17292640) –

+0

このユーティリティは、ファイル拡張子で終わるファイルの名前に依存しているようです。これは、ファイルコマンドの出力をチェックするほど堅牢ではありません。あなたが提供するリンクから、あなたのfind呼び出しの例があります( 'find〜/ Pictures \(--iname" * .jpg "-or -iname" * .jpeg "-or -iname" * .png "-or -ame "* .tif" - または--iname "* .bmp"または--iname "* .gif" - または - "*。xpm" - または - なし "* .nef" - または - "* .cr2" -orame "* .arw" \)-size + 20k') – f3xy

関連する問題