我想获取一个遵循特定模式的目录中的所有文件名。我发现,我可以通过以下方式实现这一目标:
var fs = require('fs');
fs.readdir( dir, function(err, list) {
if(err)
throw err;
var regex = new RegExp(".*");
list.forEach( function(item) {
if( regex.test(item) )
console.log(item);
});
});
我想知道,如果有另一种可能性而不使用循环,例如将正则表达式传递给fs.readdir(..)
这在某种程度上是可能的,还是我必须使用循环?
答案 0 :(得分:1)
根据文档,函数fs.readdir
在调用回调之前不会使用正则表达式来过滤文件名。它明确提到使用readdir(3)
,它没有正则表达式的概念。
所以你必须遍历结果并过滤它们。或者也许使用可以为您完成的第三方库,但fs.readdir
本身不会这样做。
答案 1 :(得分:1)
您可以使用npm
atmosphere package来使用其他NPM模块。这将允许您使用流行的glob
NPM module。这使用了glob模式,它比匹配正则表达式模式更常用于匹配文件名。