WindowsからLinuxに切り替えるときに最初に感じたことは、Linuxには厳密な命名規則や.bmp、.jpg、.exeなどの必須ファイル拡張子がないことです。そのため、ファイル名自体ではファイル形式がわかりません。
マイファイルシステム内のすべてのJPEGファイルの拡張子が.jpgの場合、次の方法ですべてのJPEGファイルを簡単に見つけることができます。
find / -type f -name "*.jpg"
しかし、そうでない場合は、すべてのJPEGファイルを見つける方法がわかりません。
答え1
ディレクトリとサブディレクトリをクロールするには、次の手順を実行します。
find /home/place/to/crawl -type f -exec file --mime-type {} \; | awk '{if ($NF == "image/jpeg") print $0 }'
それは何ができますか?
- このタイプのすべてのinodeを検索
file
- コマンドファイルを実行してファイルのjpegヘッダを取得します。例:
image/jpeg
awk
編集する-i
:MIME文字列標準を使用するためにファイル形式を出力するときにファイルを使用するように@Franklinヒントを追加しました。これにより、JPEG単語の誤検出が減少します。
編集2:@don_crisstiプロンプトを追加しました。最後の列のみをフィルタリングし、awk
一致する場合は行全体を印刷しますimage/jpeg
。文字セット情報を表示しないようにスイッチを変更file
する--mime-type