web-dev-qa-db-ja.com

ディレクトリ内の画像の数を見つける

ディレクトリ内の画像ファイルの数を見つけたいと思いました。私はこれを使用することになりました:

find . -type f  -exec file {} \; | grep -c -i 'image'

これは非効率的な方法のように感じます。 ORステートメントを使用して、別の方法を考えることができましたが、manページからこれを行う方法を理解できませんでした。

これをより効率的に行う方法はありますか?かなり多数のファイルがあるディレクトリで上記のコマンドを実行したくないので、永遠にかかります。

2
Anirudh

拡張機能で画像を検索する場合は、次のコマンドを使用できます。

find -type f -name *.gif -o -name *.jpg -o -name *.bmp

もちろん、興味のあるすべての拡張機能をリストする必要があります。

カウントを取得するには、| wc -lを追加できます。

5
Khaled

\+の代わりに\;を使用すると、効率を向上させることができます。ここでの違いは、\+が見つかったすべてのファイルをfileの1回の実行に渡すことです。ここで、\;は見つかったファイルごとに1回fileを実行します。

find . -type f  -exec file {} \+ | grep -c -i 'image'

fileが引数として取ることができるよりも多くのファイルが見つかると、問題が発生します。その場合は、--max-argsオプションを使用してxargsにパイプすることができます。

4
Ladadadada

mime-type of file(この場合は「image」)でファイルを検索する場合は、次のコマンドが必要になります。

   find . -type f -print0 | xargs -0 file -i | grep -i image | wc -l
1