繁体   English   中英

linux查找:通过xargs移动文件

[英]linux find: move files by xargs

应该如何解决? 我正在学习教程,但收到此错误:

$ find ~/Desktop -name “*.jpg” -o -name “*.gif” -o -name “*.png” -print0 | xargs -0 mv –target-directory ~/Pictures
mv: cannot stat `–target-directory': No such file or directory

*我对如何使用xargs执行此命令感兴趣!

您不需要使用xargsfind可以在匹配项上执行命令:

find ~/Desktop -name “*.jpg” -o -name “*.gif” -o -name “*.png” -exec mv \{\} ~/Pictures \;

您可以在-exec之后和转义的分号\\;前给出命令\\; \\{\\}被替换为匹配的文件名。

man find

-exec command ;

执行命令; 如果返回0状态,则为true。 以下所有要查找的参数都将被视为命令的参数,直到由';'组成的参数为止 遇到。 字符串'{}'被当前文件名替换,该文件名在命令的参数中出现的所有位置,而不仅仅是在find的某些版本中单独出现的参数中。 这两种构造都可能需要转义(带有'\\')或加引号,以防止它们被外壳扩展。 有关使用-exec选项的示例,请参见示例部分。 对于每个匹配的文件,指定的命令运行一次。 该命令在起始目录中执行。 -exec操作的使用不可避免地存在安全问题; 您应该改用-execdir选项。

注意,必须对分号和{}进行转义。

使用查找和执行

$ find ~/Desktop -name "*.jpg" -exec mv '{}' /tmp/target/ \; -or -name "*.gif" -exec mv '{}' /tmp/target/ \; -or -name "*.png" -exec mv '{}' /tmp/target/ \;

使用xargs

$ find ~/Desktop -name "*.jpg" -or -name "*.gif" -or -name "*.png"  | xargs -I SRCFILE mv SRCFILE /tmp/target/

我相信-target-directory应该是--target-directory-t

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM