在 Node.js 中,glob 是一个强大的库,它使用模式匹配来查找与指定模式匹配的文件路径。你可以使用它来根据一个目录获取该目录及其所有子目录中的所有文件。
const glob = require('glob');
// 定义模式,这里查找所有文件(不包括目录)
const pattern = '/path/to/directory/**/*';
// 使用 glob 查找文件
glob(pattern, { nodir: true }, (err, files) => {
if (err) {
console.error('An error occurred:', err);
return;
}
// files 数组包含所有匹配的文件路径
console.log(files);
});
在上面的代码中,pattern
定义了要匹配的文件模式。/**/*
是一个 glob 通配符,表示匹配任意数量的目录(包括零个)和任意文件。{ nodir: true }
选项告诉 glob
只返回文件路径,不返回目录路径。
如果你还想获取目录路径,只需移除{ nodir: true }
选项即可:
glob(pattern, (err, files) => {
if (err) {
console.error('An error occurred:', err);
return;
}
// files 数组现在包含文件和目录路径
console.log(files);
});
请注意,glob
默认是异步的,它接受一个回调函数来处理找到的文件路径。如果你需要同步版本,glob
也提供了一个 glob.sync
方法:
const glob = require('glob');
// 定义模式
const pattern = '/path/to/directory/**/*';
try {
// 使用 glob.sync 同步查找文件
const files = glob.sync(pattern, { nodir: true });
// files 数组包含所有匹配的文件路径
console.log(files);
} catch (error) {
console.error('An error occurred:', error);
}
使用 glob.sync 时,它会直接返回匹配的文件路径数组,或者在出错时抛出异常。