查找和复制文件
为什么以下内容不将文件复制到目标文件夹?查找和复制文件
# find /home/shantanu/processed/ -name '*2011*.xml' -exec cp /home/shantanu/tosend {} \;
cp: omitting directory `/home/shantanu/tosend'
cp: omitting directory `/home/shantanu/tosend'
cp: omitting directory `/home/shantanu/tosend'
如果你的目的是要找到的文件复制到/家庭/山塔努/ tosend你的参数CP顺序颠倒:
find /home/shantanu/processed/ -name '*2011*.xml' -exec cp {} /home/shantanu/tosend \;
注:find命令使用{}作为匹配文件的占位符
您需要使用cp -t /home/shantanu/tosend
来告诉它参数是目标目录而不是源。然后,您可以将其更改为-exec ... +
,以便cp
一次可以复制尽可能多的文件。
我面临的一个问题是这样的......
实际上,有两种方式可以在copy
命令处理find
命令输出
-
如果
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
命令的一部分,在按下输入按钮之前应该逃脱。否则,你会得到一个错误这样的
find: missing argument to `-exec'
在你的情况,复制命令语法是为了找到复制文件到/home/shantanu/tosend
错误。以下命令将工作:
find /home/shantanu/processed/ -name '*2011*.xml' -exec cp {} /home/shantanu/tosend \;
3.如果你有GNU'find' /'xargs','find
其中的原因错误是,你正试图要求-r选项文件夹复制也CP 感谢
嗨,因为问题已经回答了(从前一阵子)这不是一个真正相关的答案,它也应该是一个评论(当你有更多的代表)时,除非你愿意扩大并解释它。只是一个头:)。 – W1ll1amvl 2014-12-08 00:57:00
什么是'\目的;'? – Astrid 2017-01-13 21:36:42
@Astrid check [this](http://unix.stackexchange.com/questions/12902/how-to-run-find-exec) – shellbye 2017-01-17 08:44:19
Ahh我看到@shellbye - thanks – Astrid 2017-01-17 11:09:49