查找目录中的图像数量

查找目录中的图像数量

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

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

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

有什么想法可以更有效地完成此操作吗?我不想在包含大量文件的目录上执行上述命令并让它永远耗费时间。

答案1

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

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

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

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

答案2

\+您可以使用而不是来提高效率\;。这里的区别是\+将所有找到的文件传递给一次执行,file其中对找到的每个文件\;执行一次。file

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

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

答案3

如果你想通过 mime 类型(本例中为“image”)查找文件,你需要执行以下命令

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

相关内容