node-rn
v0.7.1
Published
a handy file renaming tool
Downloads
4
Readme
node-rn
a handy file renaming tool
Install globally with npm:
npm i -g node-rn
TLDR; simple usage
Let's assume you have 3 pdf files in your directory:
a-slides.pdf
b-slides.pdf
c-slide.pdf
Then:
rn '*-slides' 's-*' *.pdf --go
will rename only the first two files, leaving untouched the extensions:
s-a.pdf
s-b.pdf
c-slide.pdf
If you omit --go
, it will only print the new filenames without actually changing them.
To avoid backticks around the first two patterns, you can use a question mark ?
:
rn ?-slides s-? *.pdf --go
You can include the extension in the renaming with -x
. For example:
rn -x '*.pdf' '*.pdfx' *.pdf --go
will change the extensions of each file:
a-slides.pdfx
b-slides.pdfx
c-slide.pdfx
Additional keyword substitutions
The target filename rule can include one or more keywords:
$..0N
: will translate to the file sequence number (padding configurable)$D{date format}
: will translate to the creation date formatted as specified. It uses momentjs format.$E
: will translate to the extension of the file (noext
if missing)$K
: will translate to the value specified with the -k option
Example:
rn -x -k my_keyword '*.pdf' '$E/s-$K-$000N.pdf' $srcdir/*.pdf
will create a folder for each extension found (pdf
in this case), and rename the files as follows:
a-slides.pdf
topdf/s-my_keyword-000.pdf
b-slides.pdf
topdf/s-my_keyword-001.pdf
c-slide.pdf
topdf/s-my_keyword-002.pdf
Finally, you can post-process all filenames with an underscore.string
function; eg. :
rn '*' '*' *.pdf -t 'classify'
would yield:
ASlides.pdf
BSlides.pdf
CSlide.pdf
Possible functions are: classify, underscored, camelized, (de)capitalize. Check underscore.string for all the other possibilities; the function must receive a string and return a string.
For using pre-saved templates see the sections below:
General help
Usage:
rn -l | --list
rn -u NAME [ -k KEY ] [ -x ] [ -g ] [ -v ] FILES ...
rn FROM TO [ -k KEY ] [ -x ] [ -g ] [ -v ] [ -t T ] FILES ...
rn -h | --help
Options:
-g, --go Execute rename, otherwise is dry-run
-u, --use NAME Use template stored as NAME in $HOME/.rnc
-l, --list Show templates
-k, --key KEY Define a keyword to be used in the TO pattern as $K
-x, --ext Interpret extension as part of the substitution pattern
-v, --verbose Additional info
-t, --transform T Underscore.string function to apply at the end.
Templates
Renaming templates are stored in ~/.rnc
in JSON format. This file is a JSON map from template names to template data. For example, this is a rule that I named as kelby
, since I've read about it in a book about Lightroom written by Scott Kelby; it renames all the files (by preserving the extensions) with the creation date, a keyword (specified with -k
in the command line) and a sequence number:
"kelby": {
"name": "kelby",
"from": "*",
"to": "$D{YYMMDD}_$K_$000N",
"description": "This was described in Scott Kelby's book on Lightroom"
}
It can be invoked in this way:
rn -u 'kelby' -k my_keyword *.pdf
renaming all the pdf
files according to the template.
There is a bunch of already made and usable templates in the distribution of rn
so check them out. You can list them with rn -l
:
Available patterns
name from to description opts
-------- ---- ------------------------------ ----------------------------------------------------- ---------------
kelby * $D{YYMMDD}_$K_$000N This was described in Scott Kelby's book on Lightroom
kelbyf * $D{YYMMDD}/$D{YYMMDD}_$K_$000N As kelby, but creates a folder with creation date
bigfold * $D{YYMMDD}_$000N_* This is what you would use in a big folder. fn: underscored
download * $E/* Organize your Download folder, once and for all fn: underscored
Author
Vittorio Zaccaria
License
Copyright (c) 2015 Vittorio Zaccaria
Released under the BSD license
This file was generated by verb on January 13, 2015.