【问题标题】:Exclude directory while copy directory复制目录时排除目录
【发布时间】:2018-03-01 09:21:37
【问题描述】:

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

示例:

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

我想排除目录ab

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

【问题讨论】:

  • 希望this已经有了答案
  • 在这个逗号中只排除了一个文件夹。我想在一个命令中排除两个目录
  • 尝试:ls | grep -Pv '^(a|b)$' | xargs -I xxx echo xxx 代替 echo 使用您的 cp 命令

标签: linux shell unix cp


【解决方案1】:

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

请参阅下面的find 示例:

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

【讨论】:

    【解决方案2】:

    试试下面的rsync 它对我有用ubuntu 14.04

    rsync -av --exclude='/root/tmp/a' --exclude='/root/tmp/b' 
    /path/to/include /path/to/include /path/to/destination
    

    【讨论】:

      【解决方案3】:

      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 中启用!

      【讨论】:

        猜你喜欢
        • 2011-09-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-14
        • 2011-05-04
        • 2015-07-31
        • 2012-06-17
        相关资源
        最近更新 更多