Recursive directory walker that retrieves all dir/file paths along with their stats and follows symlinks.
- Traverses recursively and asynchronously all sub-directories.
- Can ignore artifacts via filtering mechanism based on CousteauStats properties.
- Properly resolves and follows symlinks. (filtering in symlinks is applied based on the original target artifact)
- Reports broken symlinks.
$ npm install cousteau
The function accepts three arguments
cousteau(path, [ignoreOptions], callback)
path
- The target directory pathingoreOptions
- Optional filtering optioncallback
- The callback gets two arguments(errors, result)
where result is an object with below structure
// Result object
{
dirs: [CousteauStats],
files: [CousteauStats],
brokenSymlinks: [String],
}
Is an fs.Stats instance extended with the path
property.
For example:
{
path string
dev number
mode number
nlink number
uid number
gid number
rdev number
blksize number
ino number
size number
blocks number
atime Date object
mtime Date object
ctime Date object
isFile function
isDirectory function
isBlockDevice function
isCharacterDevice function
isSymbolicLink function
isFIFO function
isSocket function
}
The ignoreOptions
can be applied to one or more of the CousteauStats properties both on the directories and/or the files.
const cousteau = require("cousteau");
// Without filtering
cousteau("aPath", (errors, result) => {
console.log(errors, result);
});
// Find all png files that their size is more than 1500 bytes
// and are children of directories that contain the "zilla" substring in their name
const ignoreOptions = {
dir: {
path: (p) => !p.includes("zilla"),
},
file: {
path: (p) => !(/.*\.png$/i).test(p),
size: (s) => s <= 1500,
},
};
cousteau("aPath", ignoreOptions, (errors, result) => {
console.log(errors, result);
});
$ npm test
Note that in order to run the tests you need NodeJS version >= 6
Copyright (c) 2017 Ioannis Tzanellis
Released under the MIT license