glob:匹配具有多点扩展名的文件,但根据扩展名中的子部分排除一些文件

glob: Match files with multi-dotted extension but exclude some depending on sub part in extension

我有一个包含 tsx 文件和测试 tsx 文件的文件夹,其结构如图所示

packages
  packageName
    src
      index.tsx
      sample.tsx
      sample.test.tsx
      tests
        index.test.tsx

到目前为止,我已经能够编写一个匹配 tsx 文件的 glob 模式,如下所示:packages/**/*.{tsx,ts} 但是我想排除 glob 模式中的测试文件,即具有 .test.tsx 的文件,我该怎么做

尝试

shopt -s globstar extglob
printf '%s\n' packages/**/!(*.test).@(tsx|ts)

参见extglob section in glob - Greg's Wiki