node-rn

0.7.1 • Public • Published

node-rn NPM version

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 to pdf/s-my_keyword-000.pdf
  • b-slides.pdf to pdf/s-my_keyword-001.pdf
  • c-slide.pdf to pdf/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.

Readme

Keywords

none

Package Sidebar

Install

npm i node-rn

Weekly Downloads

0

Version

0.7.1

License

BSD

Last publish

Collaborators

  • vzaccaria