如何在最小匹配模式中同时使用 NOT 和 OR 进行过滤?
How can I filter with both NOT and OR in minimatch patterns?
我们正在使用 TFS 2017 和复制文件构建步骤将构建结果的特定文件复制到另一个目录。具体来说,我们只希望复制 *.dll 和 *.exe,但不要复制 *.Tests.dll 或 *.resources.dll.
构建步骤支持最小匹配模式来过滤文件,但我无法让它同时应用两个过滤器。
模式看起来像这样:
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 不包括这种情况。
好吧,看来你真的可以直接把表达式放在一起,只是过滤器要严格一些。这行得通,但我仍然不知道为什么:
bin\**\!(*.Tests.dll|*.resources.dll|*.pdb|*.xml|*.manifest)?(*.exe|*.dll)
我们正在使用 TFS 2017 和复制文件构建步骤将构建结果的特定文件复制到另一个目录。具体来说,我们只希望复制 *.dll 和 *.exe,但不要复制 *.Tests.dll 或 *.resources.dll.
构建步骤支持最小匹配模式来过滤文件,但我无法让它同时应用两个过滤器。
模式看起来像这样:
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 不包括这种情况。
好吧,看来你真的可以直接把表达式放在一起,只是过滤器要严格一些。这行得通,但我仍然不知道为什么:
bin\**\!(*.Tests.dll|*.resources.dll|*.pdb|*.xml|*.manifest)?(*.exe|*.dll)