19 releases (7 stable)

1.3.1 Dec 30, 2022
1.2.2 Aug 12, 2022
1.2.1 Jul 9, 2022
1.1.0 May 11, 2021
0.4.2 Apr 23, 2020

#452 in Command line utilities

36 downloads per month


669 lines


Test Download Wiki

Batch rename utility for developers

Alt text

How to install


You can download a pre-compiled executable for Linux, MacOS and Windows operating systems, then you should copy that executable to a location from your $PATH env:

You might need to run chmod +x nomino-linux-64bit or chmod +x nomino-macos-64bit.

Arch Linux

You can use nominoAUR package to install nomino in Arch Linux.

Build Manually

If you prefer to build nomino manually, or a pre-compiled executable is not provided for your target, then you can build nomino from scratch:

  • Install Rust: curl -sSf https://sh.rustup.rs | sh
  • Run cargo install nomino


    nomino [FLAGS] [OPTIONS] [[SOURCE] OUTPUT]...

    -e, --extension    Preserves the extension of input files in 'sort' and 'regex' options
    -h, --help         Prints help information
    -k, --mkdir        Recursively creates all parent directories of '<OUTPUT>' if they are missing
    -w, --overwrite    Overwrites output files, otherwise, a '_' is prepended to filename
    -p, --print        Prints the map table to stdout
    -t, --test         Runs in test mode without renaming actual files (dry-run)
    -V, --version      Prints version information

        --depth <DEPTH>        Optional value to overwrite inferred subdirectory depth value in 'regex' mode
        --max-depth <DEPTH>    Optional value to set the maximum of subdirectory depth value in 'regex' mode
    -d, --dir <PATH>           Sets the working directory
    -g, --generate <PATH>      Stores a JSON map file in '<PATH>' after renaming files
    -m, --map <PATH>           Sets the path of map file to be used for renaming files
    -r, --regex <PATTERN>      Regex pattern (RE2 syntax) to match by filenames
    -s, --sort <ORDER>         Sets the order of natural sorting (by name) to rename files using enumerator [possible values: ASC, DESC]

    <[SOURCE] OUTPUT>...    OUTPUT is the pattern to be used for renaming files, and SOURCE is the optional regex pattern to match by filenames. SOURCE has the same function as -r option

Map file format

    "<input1>": "<output1>",
    "<input2>": "<output2>",
    "<...>": "<...>"


The output is necessary when using --sort or --regex options.


The accepted syntax of regex pattern is RE2.


  1. Placeholders have the format of {I:P} where I is the index of captured group and P is the padding of digits with 0. For example, {2:3} means the third captured group with a padding of 3, i.e. 1 is formatted as 001.
  2. Indices start from 0, and {0} means the filename.
  3. The index I could be dropped, i.e. {} or {:3}. In this case an auto incremental index is used which starts from 1. For example, {} {} equals {1} {2}.
  4. { and } characters could be escaped using \ character, i.e. \\{ and \\} in cli.
  5. Padding is only used for positive numbers, e.g. the formatted result of {:3} for 1 is 001, for -1 is -1 and for a is a.
  6. If --sort option is used, the first index {0} is the filename and the second index {1} or first occurrence of {} is the enumerator index.


  • Examples learn nomino by examples
  • Benchmark benchmark test of similar utilities to nomino


~196K SLoC