Nested rimraf CLI app.
Use it to clear your junk in nested directories Looks for target file/directory through specified tree and then removes everything
Imaginary folder structure:
/subject
→ /file
→ /node_modules // file, not directory
→ /node_modules
→ /enemy.txt
→ /sub
→ /2
→ /1
→ /4
→ /node_modules
→ /enemy.txt
→ /3
→ /node_modules
→ /enemy.txt
→ /sub2
→ /node_modules
→ /enemy.txt
→ /symlink
→ /example
→ /enemy.txt
→ /node_modules // symlink to /subject/symlink/example
Tasks:
- Find all
node_modules
- Find and remove all
node_modules
- Find and remove all directories named
node_modules
- Find and remove all
node_modules
, but do not remove symlinks [Ultimate]
Find allnode_modules
, except files and symlinks, save them to file, correct file and remove the remaining
We need to run scan
command with target=node_modules
and directory=./subject
$> nested-rimraf scan node_modules ./subject
Files and directories (include symlinks):
→ subject/node_modules
→ subject/symlink/node_modules
→ subject/file/node_modules
→ subject/sub/node_modules
→ subject/sub/3/node_modules
→ subject/sub/2/1/4/node_modules
→ subject/sub2/node_modules
As easy, as previous one. Just use rm
instead of scan
$> nested-rimraf rm node_modules ./subject
Files and directories (include symlinks):
→ subject/node_modules
→ subject/symlink/node_modules
→ subject/file/node_modules
→ subject/sub/node_modules
→ subject/sub/3/node_modules
→ subject/sub/2/1/4/node_modules
→ subject/sub2/node_modules
Are you sure you want to delete it? [y/N]: y
Done flawlessly!
Note: Question Are you sure you want to delete it? [y/N]: y
may be avoided with --agree/-y
option. Like that:
$> nested-rimraf rm -y node_modules ./subject
Files and directories (include symlinks):
→ subject/node_modules
→ subject/symlink/node_modules
→ subject/file/node_modules
→ subject/sub/node_modules
→ subject/sub/3/node_modules
→ subject/sub/2/1/4/node_modules
→ subject/sub2/node_modules
Done flawlessly!
Ok, lets add option --dir-only/-d
$> nested-rimraf rm -y node_modules ./subject --dir-only
Directories (include symlinks):
→ subject/node_modules
→ subject/symlink/node_modules
→ subject/sub/node_modules
→ subject/sub/3/node_modules
→ subject/sub/2/1/4/node_modules
→ subject/sub2/node_modules
Done flawlessly!
As you can see, there is no subject/file/node_modules
in the list (because it's file, not a directory).
Let's run something similar
Same pattern:
$> nested-rimraf rm -y node_modules ./subject --without-symlinks
Directories (include symlinks):
→ subject/node_modules
→ subject/file/node_modules
→ subject/sub/node_modules
→ subject/sub/3/node_modules
→ subject/sub/2/1/4/node_modules
→ subject/sub2/node_modules
Done flawlessly!
Let's try the hardest one, shall we?
5. [Ultimate]
Find all node_modules
, except files and symlinks, save them to file, correct file and remove the
remaining
Human control, eh?
$> nested-rimraf scan -dsL node_modules ./subject --save-path ./subject/to_correct.txt
Directories (exclude symlinks):
→ subject/node_modules
→ subject/sub/node_modules
→ subject/sub/3/node_modules
→ subject/sub/2/1/4/node_modules
→ subject/sub2/node_modules
Successfully saved list to "subject/to_correct.txt"
A lot of params:
-d
- same as--dir-only
. Includes only directories-s
- same as--without-symlinks
. Excludes symlinks-L
- same as--save-list
. Saves list of matches to file--save-path
- path to save matches
What does this file contain? Nothing special, just list of files
$> cat ./subject/to_correct.txt
subject/node_modules
subject/sub/node_modules
subject/sub/3/node_modules
subject/sub/2/1/4/node_modules
subject/sub2/node_modules
Let's take it easy and save subject/sub/node_modules
by removing it from the file.
And, 3, 2, 1, clear!
$> nested-rimraf rmf -yds ./subject/to_correct.txt
Directories (enclude symlinks):
→ subject/node_modules
→ subject/sub/3/node_modules
→ subject/sub/2/1/4/node_modules
→ subject/sub2/node_modules
Done flawlessly!
Good job!
Usage:
$ nested-rimraf [OPTIONS] COMMAND [ARGS]...
Options:
--install-completion
: Install completion for the current shell.--show-completion
: Show completion for the current shell, to copy it or customize the installation.--help
: Show this message and exit.
Commands:
rm
: Scan and remove targets inside directory and...rmf
: Took file, generated by "nested-rimraf scan"...scan
: Scan directory and child-directories to find...
Scan and remove targets inside directory and sub-directories
Usage:
$ nested-rimraf rm [OPTIONS] TARGET [DIRECTORY]
Arguments:
TARGET
: Target name to find inside of directory [required][DIRECTORY]
: Directory to scan in [default: .]
Options:
-d, --dir-only
: Target only directories [default: False]-s, --without-symlinks
: Do not process symlinks as targets [default: False]-y, --agree
: Remove without any questions [default: False]-I, --ignore-errors
: Ignore errors and delete until possible [default: False]-v, --verbose
: Talk a lot [default: False]--help
: Show this message and exit.
Took file, generated by "nested-rimraf scan" and remove everything from it
Usage:
$ nested-rimraf rmf [OPTIONS] [SAVE_PATH]
Arguments:
[SAVE_PATH]
: Remove list from passed file or ".nr-todo" inside passed directory [default: .nr-todo]
Options:
-d, --dir-only
: Target only directories [default: False]-s, --without-symlinks
: Do not process symlinks as targets [default: False]-y, --agree
: Remove without any questions [default: False]-I, --ignore-errors
: Ignore errors and delete until possible [default: False]-v, --verbose
: Talk a lot [default: False]--help
: Show this message and exit.
Scan directory and child-directories to find targets
Usage:
nested-rimraf scan
Usage:
$ nested-rimraf scan [OPTIONS] TARGET [DIRECTORY]
Arguments:
TARGET
: Target name to find inside of directory [required][DIRECTORY]
: Directory to scan in [default: .]
Options:
-d, --dir-only
: Target only directories [default: False]-s, --without-symlinks
: Do not process symlinks as targets [default: False]-L, --save-list
: Save list of targets for further use [default: False]--save-path TEXT
: File to save list of targets [default: .nr-todo]-v, --verbose
: Talk a lot [default: False]--help
: Show this message and exit.