javascript - 使用 `**` 但忽略与指定名称匹配的目录

标签 javascript glob minimatch

我正在寻找一个匹配所有后代目录的 glob,但特定名称除外。例如,foo/**/*.js 匹配所有 *.js 文件,它们都是 foo/ 的后代,这很好;我想要的那个模式的扩展忽略了 __tests__ 目录下的任何后代。

foo/
  file01.js
  __tests__/
    ignore01.js
  bar/
    file02.js
    __tests__/
      ignore02.js
      qux
        ignore04.js
    baz/
      file03.js
      __tests__/
        ignore03.js

我尝试过的:

  • foo/**!(__tests__)/*.js
  • foo/!(__tests__)**/*.js
  • foo/**!(__tests__)**/*.js
  • foo/**/!(__tests__)/*.js
  • foo/!(__tests__)/**/*.js

最佳答案

这不是最优雅的解决方案,但在这里使用扩展应该可行:

foo/{,**/!(__tests__)/}*.js

这扩展到两个应该匹配您的路径的条件,即

foo/*.js
foo/**/!(__tests__)/*.js

您可以阅读有关 glob 的更多信息 over here .

关于javascript - 使用 `**` 但忽略与指定名称匹配的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56013477/

相关文章:

javascript - jQuery 验证自定义方法不显示消息

javascript - 根上的 Spring RequestMapping

c++ - 用于进行通配符字符串匹配的 Win32 API

javascript - "to"不是 expect jest/valid-expect 的有效属性

javascript - 使用javascript问题更新span标签值

regex - 无法正确解析文件;全局不工作

bash - 从 bash 中的字符串中删除指定的字符串模式

azure-devops - 排除 .git 文件夹的 VSTS 最小匹配模式

node.js - 如何使用 Node glob 获取前 X 个文件