如何移动或复制unix中的“find”命令列出的文件?

我有我使用下面的命令看到的某些文件的列表,但是如何将这些列出的文件复制到另一个文件夹,例如〜/ test?

find . -mtime 1 -exec du -hc {} + 

添加到Eric Jablow的答案,这是一个可能的解决scheme(它对我来说 – linux mint 14 / nadia)

 find /path/to/search/ -type f -name "glob-to-find-files" | xargs cp -t /target/path/ 

你可以参考“ 如何使用xargs来复制名称中有空格和引号的文件? ”。

实际上,你可以用两种方法在复制命令中处理find命令输出:

  1. 如果find命令的输出不包含任何空格,即如果文件名不包含空格,则可以使用:

     Syntax: find <Path> <Conditions> | xargs cp -t <copy file path> Example: find -mtime -1 -type f | xargs cp -t inner/ 
  2. 但是我们的生产数据文件可能包含空格,所以大多数情况下这个命令是有效的:

     Syntax: find <path> <condition> -exec cp '{}' <copy path> \; Example find -mtime -1 -type f -exec cp '{}' inner/ \; 

在第二个示例中,最后一部分,分号也被认为是find命令的一部分,在按Enter之前应该将其转义。 否则,你会得到一个错误,如:

 find: missing argument to `-exec' 
 find /PATH/TO/YOUR/FILES -name NAME.EXT -exec cp -rfp {} /DST_DIR \; 

如果您使用GNU查找,

 find . -mtime 1 -exec cp -t ~/test/ {} + 

这种方法可以很好地将输出pipe道input到xargs同时避免了这样做的缺陷(它可以处理embedded空格和换行符,而不必使用find ... -print0 | xargs -0 ... )。

将find的文件相对于其当前目录(不是您当前的目录)向上移动一个目录

 find . -path "*/yourfolder/*" -type f -execdir mv {} .. \;