我想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理它。