I want to get all filenames within a directory that follow a specific pattern. I found out, that I can acplish this by doing the following:
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);
});
});
I was wondering, if there is another possibility to do this without using a loop, e.g. passing a regex to fs.readdir(..)
.
Is that somehow possible, or do I have to use a loop?
I want to get all filenames within a directory that follow a specific pattern. I found out, that I can acplish this by doing the following:
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);
});
});
I was wondering, if there is another possibility to do this without using a loop, e.g. passing a regex to fs.readdir(..)
.
Is that somehow possible, or do I have to use a loop?
2 Answers
Reset to default 2You can use the npm
atmosphere package to use other NPM modules. This will let you use the popular glob
NPM module. This uses glob patterns, which are more mon for matching file names than regex patterns.
According to the documentation, the function fs.readdir
does not take a regular expression to filter file names before calling the callback. It mentions explicitly using readdir(3)
which has no notion of regular expression.
So you have to loop through the results and filter them. Or perhaps use a 3rd party library that would do it for you but fs.readdir
won't by itself do it.