[英]Find Command with multiple file extensions
我正在浏览许多子目录,找到所有以.JPG .jpg和.png结尾的文件,并将它们复制到一个单独的目录中,但是现在仅找到.JPG
有人可以解释我在做什么错吗?
find /root/TEST/Images -name '*.png' -o -name '*.jpg' -o -name '*.JPG' -exec cp -t /root/TEST/CopiedImages {} +
您必须对-o
条件进行分组,因为-a
,最后一个-name '*.JPG'
和-exec
之间的隐式AND具有更高的优先级 :
find /root/TEST/Images \( -name '*.png' -o -name '*.jpg' -o -name '*.JPG' \) -exec cp -t /root/TEST/CopiedImages {} +
分组是用括号完成的,但是由于它们的特殊含义是shell,因此必须转义(或用引号引起来)。
与此无关,可以通过将jpg
和JPG
过滤器与不区分大小写的-iname
组合使用来缩短整体表达式(如注释中所述):
find /root/TEST/Images \( -name '*.png' -o -iname '*.jpg' \) -exec cp -t /root/TEST/CopiedImages {} +
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.