recursively finds files by filter options from a start directory onwards and deletes those who meet conditions you can define. useful if you want to clean up a directory in your node.js app.
you can filter by extensions, names, level in directory structure, file creation date and ignore by name, yeah!
to install find-remove, use npm:
$ npm install -S find-remove
then in your node.js app, get reference to the function like that:
var findRemoveSync = require('find-remove')
var result = findRemoveSync('/temp', {extensions: ['.bak', '.log']})
the return value result
is a json object with successfully deleted files. if you output result
to the console, you will get something like this:
{
'/tmp/haumiblau.bak': true,
'/tmp/dump.log': true
}
var result = findRemoveSync('/temp', {files: 'dump.log'})
var result = findRemoveSync('/temp', {files: 'dump.log', dir: '*'})
var result = findRemoveSync('/temp', {extensions: ['.bak'], ignore: 'haumiblau.bak'})
var result = findRemoveSync('/dist', {dir: 'CVS'})
var result = findRemoveSync('/tmp', {age: {seconds: 3600}, extensions: '.jpg'})
var result = findRemoveSync('/tmp', {maxLevel: 2, extensions: '.tmp'})
this deletes any .tmp
files up to two levels, for example: /tmp/level1/level2/a.tmp
but not /tmp/level1/level2/level3/b.tmp
why the heck do we have this maxLevel
option? because of performance. if you care about deep subfolders, apply that option to get a speed boost.
var result = findRemoveSync(rootDirectory, {dir: "*", files: "*.*"})
findRemoveSync takes any start directory and searches files from there for removal. the selection of files for removal depends on the given options. and at last, it deletes the selected files/directories.
arguments
dir
- any directory to search for files and/or directories for deletion (does not delete that directory itself)- options - currently those properties are supported:
files
- can be a string or an array of files you want to delete withindir
.dir
- can be a string or an array of directories you want to delete withindir
.extensions
- this too, can be a string or an array of file extenstions you want to delete withindir
.ignore
- useful to exclude some files. again, can be a string or an array of file names you do NOT want to delete withindir
age.seconds
- can be any float number. findRemoveSync then compares it with the file stats and deletes those with creation times older thanage.seconds
maxLevel
- advanced: limits filtering to a certain level. useful for performance. recommended for crawling huge directory trees.test
- advanced: set to true for a test run, meaning it does not delete anything but returns a JSON of files/directories it would have deleted. useful for testing.
as a precaution, nothing happens when there are no options.
the unit tests are good examples on how to use the above arguments.
returns
JSON of files/directories that were deleted.
- needs a rewrite
- add more filtering options (combinations, regex, etc.)
- have an asynchronous solution
- use streams instead
MIT