glob

Bash

Glob 类似于 Regular Expression,主要的使用场景是用于批量的文件匹配,在 bash 或是配置文件中常常被使用。下面列举了一些常见的语法规则:

  • * 匹配任意多个字符(包括匹配零个)
  • ? 匹配任意一个字符
  • [abc] 匹配方括号中的任意一个字符
  • [!abc][^abc] 匹配除了方括号中定义的三个字符外的任意字符
  • [a-z] 匹配方括号定义范围内的任意一个字符
  • [!a-z][^a-z] 匹配除了方括号定义范围内的任意一个字符
  • {ab,cd,ef} 匹配花括号中定义的三个字符串中的任意一个

举个例子,如果 Jest 的单元测试文件命名规范的正则表达式是:.+\.(?:test|spec)\.[tj]sx?$,也就是匹配下面的这些文件:

  • a.test.js
  • b.test.jsx
  • c.test.ts
  • d.test.tsx
  • e.spec.js
  • f.spec.jsx
  • g.spec.ts
  • h.spec.tsx

那么,相应的 Glob 可以写:*.{test,spec}.{js,jsx,ts,tsx}

如果不涉及到 React 的代码(没有 jsx),可以写成:*.{test,spec}.[tj]s

参考文档: