是否可以在 Node.js 的
glob
的单个搜索字符串中包含多个模式?
例如查找名为
*abc*.pdf
和 *xyz.pdf*
的所有文件
使用 node-glob 时,您可以提供多种模式,如下所示:
"*(pattern1|pattern2|...)"
在你的例子中翻译如下:
"*(abc.pdf|xyz.pdf)"
完整示例(查找当前目录中的所有 .html 和 .js 文件):
glob("*(*.js|*.html)", {}, function (err, files) {
console.log(files)
})
如果您有 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)
}
对于那些想要具有多个文件扩展名的递归匹配的 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}, () => {});