如何移动或复制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
命令输出:
-
如果
find
命令的输出不包含任何空格,即如果文件名不包含空格,则可以使用:Syntax: find <Path> <Conditions> | xargs cp -t <copy file path> Example: find -mtime -1 -type f | xargs cp -t inner/
-
但是我们的生产数据文件可能包含空格,所以大多数情况下这个命令是有效的:
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 {} .. \;