Answers:
如果您打算将找到的文件复制到/ home / shantanu / tosend中,则可以将cp的参数顺序颠倒过来:
find /home/shantanu/processed/ -name '*2011*.xml' -exec cp "{}" /home/shantanu/tosend \;
注意:find命令使用{}作为匹配文件的占位符
find -iname '*.mp3' -mtime -1 -exec cp {} /home/my_path/ \;
这个命令有什么问题吗?它无法正常工作
我遇到这样的问题...
实际上,您可以通过两种方式find
在copy
命令中处理命令输出
如果find
命令的输出不包含任何空格,即如果文件名中不包含空格,则可以使用下面提到的命令:
句法: find <Path> <Conditions> | xargs cp -t <copy file path>
例: find -mtime -1 -type f | xargs cp -t inner/
但是大多数时候,我们的生产数据文件中可能包含空间。因此,以下提到的命令中的大多数时间都更安全:
句法: find <path> <condition> -exec cp '{}' <copy path> \;
例 find -mtime -1 -type f -exec cp '{}' inner/ \;
在第二个示例中,最后一部分(即分号)也被视为find
命令的一部分,应在按Enter键之前将其转义。否则你会得到这样的错误
find: missing argument to `-exec'
在您的情况下,为了将查找文件复制到中,复制命令语法是错误的/home/shantanu/tosend
。以下命令将起作用:
find /home/shantanu/processed/ -name '*2011*.xml' -exec cp {} /home/shantanu/tosend \;
find
/ xargs
,find <Path> <Conditions> -print0 | xargs -0 -r cp -t <copy file path>
。范例:find -mtime -1 -type f -print0 | xargs -r0 cp -t inner/
您需要使用cp -t /home/shantanu/tosend
来告诉它参数是目标目录而不是源。然后,您可以将其更改为-exec ... +
以便cp
一次复制尽可能多的文件。
find /home/shantanu/processed/ -name '*2011*.xml' -exec cp --target-directory=/home/shantanu/tosend {} \;
该错误的原因是您正在尝试将还需要-r选项的文件夹复制到cp。
\;
什么?