• Stars
    star
    522
  • Rank 84,811 (Top 2 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created almost 12 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Rename files in bulk.

view on npm npm module downloads Gihub repo dependents Gihub package dependents Build Status Coverage Status js-standard-style

Upgraders, please read the release notes. Please share feedback and improvement ideas here.

renamer

Renamer is a command-line utility to help rename files and folders. It is flexible and extensible via plugins.

Disclaimer

Always run this tool with the --dry-run option until you are confident the results look correct.

Synopsis

The examples below use double quotes to suit Windows users. MacOS & Linux users should use single quotes.

As input, renamer takes a list of filenames or glob patterns plus some options describing how you would like the files to be renamed.

$ renamer [options] [file...]

This trivial example will replace the text jpeg with jpg in all file and directory names in the current directory.

$ renamer --find jpeg --replace jpg *

As above but operates on all files and folders recursively.

$ renamer --find jpeg --replace jpg "**"

Fine-tune which files to process

If no filenames or patterns are specified, renamer will look for a newline-separated list of filenames on standard input. This approach is useful for crafting a specific input list using tools like find. This example operates on files modified less than 20 minutes ago.

$ find . -mtime -20m | renamer --find jpeg --replace jpg

Same again but with a hand-rolled input of filenames and glob patterns. Create an input text file, e.g. files.txt:

house.jpeg
garden.jpeg
img/*

Then pipe it into renamer.

$ cat files.txt | renamer --find jpeg --replace jpg

Rename using regular expressions

Simple example using a regular expression literal. The case-insensitive pattern /one/i matches the input file ONE.jpg, renaming it to two.jpg.

$ renamer --find "/one/i" --replace "two" ONE.jpg

Rename using JavaScript

For more complex renames, or if you just prefer using code, you can write a replace function. Create a module exporting a class which defines a replace method. This trivial example appends the text [DONE] to each file name.

import path from 'path'

class Suffix {
  replace (filePath) {
    const file = path.parse(filePath)
    const newName = file.name + ' [DONE]' + file.ext
    return path.join(file.dir, newName)
  }
}

export default Suffix

Save the above as suffix.js then process all files in the current directory using the above plugin as the replace chain.

$ renamer --dry-run --chain suffix.js *

Dry run

βœ”οΈŽ pic1.jpg β†’ pic1 [DONE].jpg
βœ”οΈŽ pic2.jpg β†’ pic2 [DONE].jpg

Rename complete: 2 of 6 files renamed.

Views

The following gif demonstrates the default view (with and without --verbose mode), the built-in alternative views (long, diff and one-line) and a custom view.

Further reading

Please see the wiki for

For more information on Regular Expressions, see this useful guide.

Install

First, ensure Node.js v14 or above is installed.

To install renamer globally as a part of your regular command-line tool kit:

$ npm install --global renamer

To install renamer as a development dependency of your project:

$ npm install --save-dev renamer

Β© 2012-21 Lloyd Brookes <[email protected]>.

Tested by test-runner.

More Repositories

1

command-line-args

A mature, feature-complete library to parse command-line options.
JavaScript
685
star
2

handbrake-js

Video encoding / transcoding / converting for node.js
JavaScript
566
star
3

command-line-usage

A simple, data-driven module for creating a usage guide.
JavaScript
207
star
4

wordwrapjs

Word-wrapping for javascript.
JavaScript
157
star
5

array-back

Isomorphic, load-anywhere arrayify function
JavaScript
82
star
6

byte-size

Isomorphic function to convert a bytes value (e.g. 3456) to a human-readable string ('3.5 kB')
JavaScript
73
star
7

ansi-escape-sequences

A simple, isomorphic library containing all known terminal ansi escape codes and sequences.
JavaScript
65
star
8

sort-array

Isomorphic, load-anywhere function to sort an array by scalar, deep or computed values in any standard or custom order
JavaScript
42
star
9

command-line-commands

Add a git-like command interface to your app.
JavaScript
41
star
10

transition-to-from-auto

perform CSS transitions to and from 'auto'
JavaScript
27
star
11

feature-detect-es6

Detect which ES6 features are available.
JavaScript
24
star
12

table-layout

Styleable plain-text table generator. Useful for formatting console output.
JavaScript
23
star
13

typical

Isomorphic, functional type-checking for Javascript
JavaScript
20
star
14

walk-back

Walk up the directory tree until a specified path is found.
JavaScript
13
star
15

usage-stats

A minimal Google Analytics Measurement Protocol client for tracking statistics in shell and javascript applications
JavaScript
12
star
16

browse

Terminal commands to launch your preferred browser (or any app) in full-screen mode
AppleScript
11
star
17

object-get

Access nested property values at any depth with a simple expression.
JavaScript
11
star
18

array-tools

Lightweight, use-anywhere toolkit for working with array data
JavaScript
9
star
19

common-log-format

Stream transform - converts common log format to JSON
JavaScript
9
star
20

gfmt

A use-anywhere, github-flavoured-markdown table generator.
JavaScript
9
star
21

table-layout-cli

Format data in column or table layout on the command line.
JavaScript
6
star
22

renamer-case

Renamer plugin to set the case of a filename.
JavaScript
5
star
23

find-replace

Replace or remove multiple items in an array
JavaScript
5
star
24

object-to-spawn-args

Converts an options object to an array suitable for passing to child_process.spawn()
JavaScript
5
star
25

yuidoc2md

A yuidoc-to-markdown generator
JavaScript
4
star
26

fs-then-native

Fs with a native promise API
JavaScript
4
star
27

work

Command and Command Queue pattern implementations
JavaScript
3
star
28

grunt-boil

Generate files with template-driven content. A simple, more generic alternative to Jekyll and Assemble.
JavaScript
3
star
29

home-path

Cross-platform home directory retriever
JavaScript
3
star
30

composite-class

An isomorphic JavaScript class for building composite structures.
JavaScript
3
star
31

file-set

Expand a list of paths and glob expressions into three sets: "files", "directories" and "not existing".
JavaScript
3
star
32

renamer-index-dir

Replaces the `{{index}}` token, resetting the counter for each folder visited.
JavaScript
3
star
33

current-module-paths

JavaScript
2
star
34

stream-handlebars

Extends handlebars with a streaming interface for .compile().
JavaScript
2
star
35

filter-where

Filter an array using any combination of scalars, object queries, functions or regular expressions.
JavaScript
2
star
36

veelo

Optimise your video library using Handbrake
JavaScript
2
star
37

cache-point

Simple, filesystem-backed memoisation cache.
JavaScript
2
star
38

fsm-base

Finite State Machine for use as a base class or mix-in
JavaScript
2
star
39

string-tools

Some useful functions for working with strings
JavaScript
2
star
40

command-line-tool

common operations for command-line tools
JavaScript
2
star
41

collect-json

Returns a stream which becomes readable with a single value once all (valid) JSON is received.
JavaScript
2
star
42

load-module

Node's require with a few extra features
JavaScript
2
star
43

stream-read-all

Returns a promise which fulfils with the supplied stream's content
JavaScript
2
star
44

template-clean

Template literal tag function to replace null and undefined values with an empty string
JavaScript
2
star
45

sse-server

Push an event stream from terminal to browser
JavaScript
2
star
46

argv-tools

Some useful tools for working with process.argv
JavaScript
1
star
47

boil-sitemap

Static website sitemap.xml generator
JavaScript
1
star
48

league

A hand-rolled Football League model with both Web and CLI visualisations.
JavaScript
1
star
49

race-timeout-anywhere

An isomorphic, load-anywhere timeout function for use with Promise.race.
JavaScript
1
star
50

stream-connect

Connects an arbitrary number of streams into a single, combined stream
JavaScript
1
star
51

obso

Observable Object
JavaScript
1
star
52

object-tools

Legacy module - no longer maintained
JavaScript
1
star
53

grunt-yuidoc2md

A markdown generator for yuidoc
JavaScript
1
star
54

config-master

A convention for storing and retrieving application config
JavaScript
1
star
55

console-dope

adds colouring and cursor control features to console
JavaScript
1
star
56

stream-monitor

Watch dem pipelines flow! Or not, as the case may be..
JavaScript
1
star
57

defer-promise

Isomorphic function returning a deferred promise. Uses native `Promise.defer` where available, else polyfills
JavaScript
1
star
58

cli-commands

A convention for building command-driven CLI apps
JavaScript
1
star
59

common-dir

Returns the parent directory common to each path
JavaScript
1
star
60

handlebars-json

Provides access to JSON.stringify from a Handlebars template.
JavaScript
1
star
61

collect-all

returns a stream which becomes readable once all input is received
JavaScript
1
star
62

boil

Boilerplate files, packages, apps, websites etc.
JavaScript
1
star
63

test-value

A module for testing values.
JavaScript
1
star
64

linguist

Translate strings or JSON from Node.js or the command line
JavaScript
1
star
65

create-mixin

For achieving something resembling multiple-inheritence in Javascript
JavaScript
1
star
66

nature

currently inactive
JavaScript
1
star