查找目录中的图像数

Ani*_*udh 2 linux bash find

我想找到目录中图像文件的数量。我最终使用了这个:

find . -type f  -exec file {} \; | grep -c -i 'image'
Run Code Online (Sandbox Code Playgroud)

这感觉像是一种低效的方法。我可以想到另一种方法 - 使用 OR 语句,但我无法从手册页中弄清楚如何做到这一点。

任何想法如何更有效地完成这项工作?我不想在包含大量文件的目录上执行上述命令并让它永远执行。

Kha*_*led 5

如果要按扩展名搜索图像,可以使用以下命令:

find -type f -name *.gif -o -name *.jpg -o -name *.bmp
Run Code Online (Sandbox Code Playgroud)

当然,您需要列出您感兴趣的所有扩展。

要获得计数,您可以附加| wc -l.


Lad*_*ada 5

\+您可以通过使用代替来提高效率\;。此处的区别在于,\+将所有找到的文件传递到单个执行,其中file对于找​​到的每个文件\;执行file一次。

find . -type f  -exec file {} \+ | grep -c -i 'image'
Run Code Online (Sandbox Code Playgroud)

file如果它找到的文件数量多于可以作为参数的文件数量,您将会遇到问题。如果是这种情况,您可以xargs使用该选项将其通过管道传输。--max-args