Skip to main content

Use it to clear your junk in nested directories Looks for target file/directory through specified tree and then removes everything

Project description

nested-rimraf

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

Package version

Practice

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:

  1. Find all node_modules
  2. Find and remove all node_modules
  3. Find and remove all directories named node_modules
  4. Find and remove all node_modules, but do not remove symlinks
  5. [Ultimate] Find all node_modules, except files and symlinks, save them to file, correct file and remove the remaining

1. Find all node_modules

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

2. Find and remove all 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!

3. Find and remove all directories named node_modules

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

4. Find and remove all node_modules, but do not remove symlinks

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...

nested-rimraf rm

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.

nested-rimraf rmf

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.

nested-rimraf scan

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nested-rimraf-1.0.1.tar.gz (18.7 kB view hashes)

Uploaded Source

Built Distribution

nested_rimraf-1.0.1-py3-none-any.whl (19.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page