复制目录时排除目录
Exclude directory while copy directory
我想在复制时排除两个目录。
示例:
$ ls /root/tmp
a b c d e f
我想排除目录 a
和 b
:
$ cp -rp /root/tmp/ /root/tmp1/
rsync
可用于排除多个目录,如下所示:
rsync -av --exclude=/root/tmp/a --exclude=/root/tmp/b /root/tmp/ /root/tmp1/
使用 cp
命令
cp -r /root/tmp/!(a | b) /root/tmp1/
在 cp
命令之前执行 shopt -s extglob
以在 cp
中启用 !
试试下面的 rsync
它适用于我 ubuntu 14.04
rsync -av --exclude='/root/tmp/a' --exclude='/root/tmp/b'
/path/to/include /path/to/include /path/to/destination
您可以在复制之前排除目录作为查找结果的一部分,但是按照 Sathiya 的建议使用 rsync
或 cp
并启用 '!'
支持是一个更简单的解决方案.
请参阅下面的 find
示例:
find /root/tmp/ -mindepth 1 -maxdepth 1 -type d ! -regex '\(.*a\|.*b\)' -exec cp -r {} /root/tmp1/ \;
您可以在 bash 中执行此操作(在 sh 中不起作用):
shopt -s extglob
cp -r !(somefile|somefile2|somefolder) destfolder/
我想在复制时排除两个目录。
示例:
$ ls /root/tmp
a b c d e f
我想排除目录 a
和 b
:
$ cp -rp /root/tmp/ /root/tmp1/
rsync
可用于排除多个目录,如下所示:
rsync -av --exclude=/root/tmp/a --exclude=/root/tmp/b /root/tmp/ /root/tmp1/
使用 cp
命令
cp -r /root/tmp/!(a | b) /root/tmp1/
在 cp
命令之前执行 shopt -s extglob
以在 cp
!
试试下面的 rsync
它适用于我 ubuntu 14.04
rsync -av --exclude='/root/tmp/a' --exclude='/root/tmp/b'
/path/to/include /path/to/include /path/to/destination
您可以在复制之前排除目录作为查找结果的一部分,但是按照 Sathiya 的建议使用 rsync
或 cp
并启用 '!'
支持是一个更简单的解决方案.
请参阅下面的 find
示例:
find /root/tmp/ -mindepth 1 -maxdepth 1 -type d ! -regex '\(.*a\|.*b\)' -exec cp -r {} /root/tmp1/ \;
您可以在 bash 中执行此操作(在 sh 中不起作用):
shopt -s extglob
cp -r !(somefile|somefile2|somefolder) destfolder/