查找具有多个文件扩展名的Command

时间:2017-11-16 21:29:00

标签: linux shell unix find

我正在查看许多子目录并查找以.JPG .jpg和.png结尾的所有文件,并将它们复制到一个单独的目录中,但是现在它只发现了.JPG

有人可以解释我做错了吗?

find /root/TEST/Images -name  '*.png' -o  -name '*.jpg' -o -name '*.JPG' -exec cp -t /root/TEST/CopiedImages {} +

1 个答案:

答案 0 :(得分:2)

您必须对-o条件进行分组,因为-a,最后-name '*.JPG'-exec之间隐含的AND有higher precedence

find /root/TEST/Images \( -name  '*.png' -o  -name '*.jpg' -o -name '*.JPG' \) -exec cp -t /root/TEST/CopiedImages {} +

使用括号进行分组,但由于它们的特殊含义是shell,因此必须对它们进行转义(或引用)。

与此无关,您可以通过将jpgJPG的过滤条件与不区分大小写的-iname(如评论中所述)组合来缩短整体表达式:

find /root/TEST/Images \( -name  '*.png' -o  -iname '*.jpg' \) -exec cp -t /root/TEST/CopiedImages {} +