是否可以在 Nodejs 的 glob 中的单个搜索字符串中包含多个模式? 就像我需要找到所有具有“abc.pdf”和“xyz.pdf”的文件。
使用 node-glob 时,您可以提供多种模式,如下所示:
"*(pattern1|pattern2|...)"
在你的例子中翻译如下:
"*(abc.pdf|xyz.pdf)"
完整示例(查找当前目录中的所有 .html 和 .js 文件):
glob("*(*.js|*.html)", {}, function (err, files) {
console.log(files)
})
对于那些想要具有多个文件扩展名的递归匹配的 glob 选项的人。这将匹配
path
文件夹中扩展名为 .ts?x
和 .js?x
的所有文件。
import * as glob from "glob";
// Synchronous operation
glob.sync(`path/**/*(*.ts|*.tsx|*.js|*.jsx)`, {...globOptions});
// Asynchronous operation
glob(`path/**/*(*.ts|*.tsx|*.js|*.jsx)`, {...globOptions}, () => {});
如果您有 Node.js 22 或更高版本,则无需使用 node-glob 包即可使用
glob
。 fs
模块附带 glob
和 globSync
。
基于 alexloehr 的答案,您可以像这样本地使用
glob
:
import { glob } from 'node:fs/promises';
for await (const entry of glob("*(*.js|*.html)")){
console.log(entry)
}