如何将除一个文件和一个目录之外的所有文件复制到另一个目录

时间:2014-09-13 00:15:10

标签: macos jenkins terminal

我有以下目录

  1. Dir A:
    • .git - >这是一个目录
    • 的.gitignore
    • Dir B
    • Dir C
    • Dir E
    • file f
    • file g
    • Dir H
  2. 我想将除(.git,.gitignore和Dir B)之外的所有内容复制到Dir B.(Dir B在Dir A之下)

    我试过以下

    cp -r !(Dir B|.git|.gitignore) ~/Dir B
    

    在终端中运行时,这可以正常工作,但是当我从Jenkins Shell窗口运行它时,会出现错误。

    syntax error near unexpected token `('
    

    请建议

2 个答案:

答案 0 :(得分:2)

尝试此命令 -

rsync -r --exclude='.*' --exclude='DirB' ./ DirB

答案 1 :(得分:0)

我假设您想要将任何隐藏文件/目录复制到目标文件夹,即Dir B。如果是这样,只需使用以下命令并在相同的shell 中使用它们,如下面的快照所示:

enter image description here

shopt -s extglob
cp -r !(Dir B) 'Dir B'
shopt -u extglob

您不必明确指定 .git 目录和 .gitignore 文件。此外,您可以根据需要/配置更改上述目标目录('Dir B')。