find files by extension, *.html under a folder in nodejs
node.js, recursive simple function:
var path = require('path'),
fs = require('fs');
function fromDir(startPath, filter) {
//console.log('Starting from dir '+startPath+'/');
if (!fs.existsSync(startPath)) {
console.log("no dir ", startPath);
return;
}
var files = fs.readdirSync(startPath);
for (var i = 0; i < files.length; i++) {
var filename = path.join(startPath, files[i]);
var stat = fs.lstatSync(filename);
if (stat.isDirectory()) {
fromDir(filename, filter); //recurse
} else if (filename.endsWith(filter)) {
console.log('-- found: ', filename);
};
};
};
fromDir('../LiteScript', '.html');
add RegExp if you want to get fancy, and a callback to make it generic.
var path = require('path'),
fs = require('fs');
function fromDir(startPath, filter, callback) {
//console.log('Starting from dir '+startPath+'/');
if (!fs.existsSync(startPath)) {
console.log("no dir ", startPath);
return;
}
var files = fs.readdirSync(startPath);
for (var i = 0; i < files.length; i++) {
var filename = path.join(startPath, files[i]);
var stat = fs.lstatSync(filename);
if (stat.isDirectory()) {
fromDir(filename, filter, callback); //recurse
} else if (filter.test(filename)) callback(filename);
};
};
fromDir('../LiteScript', /\.html$/, function(filename) {
console.log('-- found: ', filename);
});
i like using the glob package:
const glob = require('glob');
glob(__dirname + '/**/*.html', {}, (err, files)=>{
console.log(files)
})