0.2.11 • Published 6 years ago
safe-rename-cli v0.2.11
Rename 
A simple and safe command-line renaming utility using JavaScript regular expressions.
Prevents renaming collisions and overwriting existing files. Checks for collisions between input files before beginning to rename them, so you don't end up with a dirty directory.
No runtime dependencies outside of Node.js >=v8.
Installation
$ npm install -g safe-rename-cliThe executable is aliased to rename and rename.js.
Usage
rename.js [OPTION]... PATTERN REPLACEMENT FILE...
-h, --help Show this help.
-v, --verbose Print extended information.
-d, --dry-run Don't modify any file.
-C, --ignore-collisions Force rename on collision conflicts.
-S, --skip-problematic Continue renaming non-problematic files instead of stopping on errors.Examples
The syntax is similar to calling String#rename in JavaScript.
$ ls
foo.jsx bar.jsx bazjsx
$ rename '\.jsx$' '.js' *
$ ls
foo.js bar.js bazjsxCapture groups and back references:
$ ls
foobar fooBAZbar fooQUXbar
$ rename '([A-Z]+)bar' 'bar-$1' *
$ ls
foobar foobar-BAZ foobar-QUXProblematic renaming operation:
$ ls
foo-10.txt foo-11.txt foo-9.txt
$ rename 'foo-(.)\.*' '$1-foo.log' *
ERROR: Colliding files:
"foo-10.txt",
"foo-11.txt"
=> "1-foo.log"
$ ls
foo-10.txt foo-11.txt foo-9.txt
# Nothing changed, foo-9.txt wasn't touched either.Here, we can either run rename with -S to skip the conflicting files and deal with them manually later, or we can fix the regular expression so it doesn't produce any collision, e.g.:
$ rename 'foo-([0-9]*)\.*' '$1-foo.log' *
$ ls
10-foo.log 11-foo.log 9-foo.logNotes
- For a more heavyweight solution with "undo" support try jhotmann/rename-cli.