【问题标题】:Copy files with extension and exclude by filename复制带有扩展名的文件并按文件名排除
【发布时间】:2018-09-13 05:08:26
【问题描述】:

我正在尝试将以下 robocopy 命令移植到 Linux:

robocopy SrcDir DstDir *.dll *.pdb *.xml /xf Unity*.* nunit*.*

换句话说,我想:

  • 包括所有dll、pdb 和xml 文件
  • 除非它们以Unity 或nunit 开头

我已经阅读了以下两个主题,但无法确定确切的语法:

到目前为止,我的最佳猜测是:

  • 启用shopt -s extglob
  • 进入源目录cd SrcDir
  • 使用此命令:cp ((*.dll | *.pdb | *.xml) && !(Unity*.* | nunit*.*)) DstDir

但我的条件表达式中出现语法错误,从 *.dll 开始。

【问题讨论】:

    标签: linux bash robocopy cp


    【解决方案1】:

    根据以下链接:

    BASH copy all files except one

    您可以使用以下命令:

    find [YOUR_SOURCE_ADDRESS] \( -iname \*.dll -o -iname \*.pdb -o -iname \*.xml \) ! \(-name "Unity*" -o -name "nunit*" \) -exec cp -t [YOUR_DEST_ADDRESS] {} +
    

    您可以更改 [YOUR_SOURCE_ADDRESS] 和 [YOUR_DEST_ADDRESS](使用您的搜索地址和目标地址进行复制)

    【讨论】:

      【解决方案2】:

      您可以通过extglob 使用此命令:

      shopt -s extglob nullglob dotglob
      cd "$srcDir"
      
      cp !(@(Unity|nunit)).{dll,pdp,xml} "$dstDir"
      

      【讨论】:

        猜你喜欢
        • 2016-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多