Linux 具有多个文件扩展名的Find命令
我浏览了很多子目录,找到了所有以.JPG.JPG和.png结尾的文件,并将它们复制到一个单独的目录中,但是刚才只找到了.JPG 有人能解释一下我做错了什么吗Linux 具有多个文件扩展名的Find命令,linux,shell,unix,find,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 {} + 您必须将-o条件分组,因为-a,最后一个-name'*.JPG'和-exec之间的隐含AND具有: 分组是用括号
find /root/TEST/Images -name '*.png' -o -name '*.jpg' -o -name '*.JPG' -exec cp -t /root/TEST/CopiedImages {} +
您必须将
-o
条件分组,因为-a
,最后一个-name'*.JPG'
和-exec
之间的隐含AND具有:
分组是用括号完成的,但由于它们的特殊含义是shell,所以必须对它们进行转义(或引用)
与此无关,您可以通过将jpg
和jpg
的过滤器与不区分大小写的-iname
组合来缩短整个表达式(如注释中所述):
您必须将
-o
条件分组,因为-a
,最后一个-name'*.JPG'
和-exec
之间的隐含AND具有:
分组是用括号完成的,但由于它们的特殊含义是shell,所以必须对它们进行转义(或引用)
与此无关,您可以通过将jpg
和jpg
的过滤器与不区分大小写的-iname
组合来缩短整个表达式(如注释中所述):
第2行:意外标记“(”附近的语法错误是我在使用那行代码时遇到的错误我不知道我在那里做错了什么。现在可以正常工作了。谢谢!你可以使用
-iname jpg
来区分大小写。@MarkSetchell,补充道。谢谢!我想这是一个公平的问题;我想是因为一个人不得不逃避;作为-exec的终止符。但是当然+对shell没有特殊意义……所以ig请参阅我以前的注释:D“第2行:意外标记“%(”附近的语法错误”是我在使用那行代码时遇到的错误我不知道我在那里做错了什么。现在可以正常工作了。谢谢!你可以使用-iname jpg
来区分大小写。@MarkSetchell,补充道。谢谢!我想这是一个公平的问题;我想是因为一个人不得不逃避;作为-exec的终止符。但是当然+对shell没有特殊意义……所以ig请不要理会我先前的评论:D
find /root/TEST/Images \( -name '*.png' -o -name '*.jpg' -o -name '*.JPG' \) -exec cp -t /root/TEST/CopiedImages {} +
find /root/TEST/Images \( -name '*.png' -o -iname '*.jpg' \) -exec cp -t /root/TEST/CopiedImages {} +