复制目录时排除目录

时间:2017-09-20 10:43:02

标签: linux shell unix

我想在复制时排除两个目录。

示例:

$ ls /root/tmp
a b c d e f    

我想要排除目录ab

$ cp -rp /root/tmp/ /root/tmp1/

3 个答案:

答案 0 :(得分:2)

rsync可用于排除多个目录,如下所示:

rsync -av --exclude=/root/tmp/a --exclude=/root/tmp/b /root/tmp/ /root/tmp1/

使用cp命令

cp -r /root/tmp/!(a | b) /root/tmp1/

shopt -s extglob命令之前执行cp以在!中启用cp

答案 1 :(得分:1)

rsync

上试试以下ubuntu 14.04对我有用
rsync -av --exclude='/root/tmp/a' --exclude='/root/tmp/b' 
/path/to/include /path/to/include /path/to/destination

答案 2 :(得分:0)

您可以在复制之前将目录排除为查找结果的一部分,但使用rsynccp并启用了'!'支持,这是Sathiya建议的一个更简单的解决方案。

请参阅下面的find示例:

find /root/tmp/ -mindepth 1 -maxdepth 1 -type d ! -regex '\(.*a\|.*b\)' -exec cp -r {} /root/tmp1/ \;