find一个目录中的图像的数量

我想find一个目录中的图像文件的数量。 我结束了使用这个:

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

这感觉就像一个低效率的做法。 我可以想办法做到这一点 – 使用一个OR语句,但是我不能从man page中弄清楚如何做到这一点。

任何想法如何更有效地做到这一点? 我不想在具有相当大数量的文件的目录上执行上述命令,并且永久占用它。

如果要通过扩展名search图像,可以使用以下命令:

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

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

为了计算,你可以追加| wc -l | wc -l

如果你想在这种情况下通过MIMEtypes的文件find文件“image”,你将需要下面的命令

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

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

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

如果发现比file更多的file可以作为参数,则会遇到问题。 如果是这种情况,可以通过带有--max-args选项的xargs来pipe理它。