以递归方式将所有文件从一个目录复制到另一个目录,但有例外

以递归方式将所有文件从一个目录复制到另一个目录,但有例外

我如何将除几个目录之外的所有文件从一个目录复制到另一个目录。例如:

cp -R test /www/test2 would copy all

但我想排除两个名为 log 和 logs 的文件夹。

我尝试过类似的事情:

find ~test -not -name logs,log |  cp -R test /www/test2 

但是你能帮我解释一下语法吗?

答案1

使用 rsync:

rsync -a --exclude=logs --exclude=log from/ to/

答案2

我认为你正在寻找类似的东西:

find dir -type d ! \( -name 'log' -o -name 'logs' \) | xargs -I{} cp -R {} /www/test2/{}

答案3

如果使用

shopt -s extglob
cp -R test/!(log|logs) /www/test2

http://wiki.bash-hackers.org/syntax/pattern

相关内容