【问题标题】:How can I filter with both NOT and OR in minimatch patterns?如何在 minimatch 模式中同时使用 NOT 和 OR 进行过滤?
【发布时间】:2017-11-16 04:46:10
【问题描述】:

我们正在使用 TFS 2017 和“复制文件”构建步骤将构建结果的特定文件复制到另一个目录。具体来说,我们只需要复制 *.dll 和 *.exe,而不需要复制 *.Tests.dll 或 *.resources.dll。

构建步骤支持 minimatch 模式来过滤文件,但我无法让它同时应用这两个过滤器。

图案如下所示:

bin\**\?(*.exe|*.dll)
bin\**\!(*.Tests.dll|*.resources.dll)

文件夹内容例如是:

bin\Yes.dll
bin\Yes.exe
bin\No.Tests.dll
bin\No\Some.resources.dll

这些模式似乎是按顺序应用的,所以它们都是单独工作的,而不是一个接一个。

我尝试了类似的东西

bin\**\?(*.exe|*.dll)!(*.Tests.dll|*.resources.dll)

但这也不起作用,也没有过滤任何内容。我可以以某种方式将它们组合成一个过滤器吗? docs 不涉及这种情况。

【问题讨论】:

    标签: tfs tfsbuild glob minimatch


    【解决方案1】:

    好吧,看来您实际上可以将表达式直接放在一个之后,只是过滤器必须更严格。这行得通,但我仍然不知道为什么:

    bin\**\!(*.Tests.dll|*.resources.dll|*.pdb|*.xml|*.manifest)?(*.exe|*.dll)
    

    【讨论】:

      猜你喜欢
      • 2013-08-16
      • 1970-01-01
      • 2012-01-12
      • 1970-01-01
      • 2010-10-18
      • 2012-12-04
      • 1970-01-01
      • 1970-01-01
      • 2018-04-13
      相关资源
      最近更新 更多