Unix / Linux中特定文件的递归副本?

我需要从目录及其所有子目录复制所有*.jar文件。 我怎样才能在UNIX / Linux终端上做到这一点? 命令cp -r *.jar /destination_dir不起作用。


rsync对本地文件复制以及机器间的复制很有用。 这将做你想要的:

rsync -avm --include='*.jar' -f 'hide,! */' . /destination_dir

整个目录结构来自。 被复制到/ destination_dir,但只有.jar文件被复制。 -a确保文件上的所有权限和时间不变。 -m将省略空目录。 -v用于详细输出。

对于干运行添加一个-n,它会告诉你它会做什么,但不会实际上复制任何东西。


如果你不需要目录结构只有jar文件,你可以使用:

shopt -s globstar
cp **/*.jar destination_dir

如果你想要目录结构,你可以检查cp--parents选项。


如果你的find有一个-exec开关,并且cp和-t选项:

find . -name "*.jar" -exec cp -t /destination_dir {} +

如果您发现不提供“+”用于并行调用,则可以使用“;” 但是你可以省略-t

find . -name "*.jar" -exec cp {} /destination_dir ";"
链接地址: http://www.djcxy.com/p/78001.html

上一篇: Recursive copy of specific files in Unix/Linux?

下一篇: AngularJS and IE 8 errors on services