11 stable releases

1.4.0 Oct 20, 2023
1.3.1 Mar 12, 2022
1.3.0 Feb 15, 2022
1.2.0 Jan 20, 2021
1.1.1 Nov 7, 2020

#1068 in Command line utilities

MIT license

30KB
649 lines

rena

crates.io

A hopefully-simple bulk-renaming utility.

Its capabilities currently include dry-run, regex and (simply?) tweaked output.

Requirements

  • clap
  • color-eyre
  • paris
  • strfmt
  • regex

Usage

The most basic usage is simply rena <folder>, which runs against a folder, renaming everything with the pattern of item_{:10>number}, where number is the item's number when being read.
The padding amount can be adjusted with --padding <number>, and the direction with --padding-direction <direction>, and the prefix with --prefix <prefix>.

It can also run in regex mode, by default as a filter if only --match <regex> is used. If --match-rename <pattern> is also used, it renames everything based on a pattern. The exact syntax is described in --help.

See -h or --help for all flags.

Examples

Currently only has the most basic execution mode covered, I hope to add more.

Most Basic

Let's say there's a directory named images with the following structure:

image.jpg
image3.jpg
12746uju21.jpg
17f29a002.jpg

After running rena images/, it will result in:

item_0000000000.jpg
item_0000000001.jpg
item_0000000002.jpg
item_0000000003.jpg

Regex Filtering

Let's say there's a directory named images with the following structure:

image.jpg
image3.mp4
12746uju21.jpg
17f29a002.jpg
17f2121wss.png
ffe_image_breaker.webm
potential_effort.jpg

After running rena --match "\.[jpgn]+" images/, it will result in:

ffe_image_breaker.webm
image3.mp4
item_0000000000.jpg
item_0000000001.png
item_0000000002.jpg
item_0000000003.jpg
item_0000000004.jpg

Regex Usage

Let's say there's a directory named Show with the following structure:

Show.S01E01.1080p.mkv
Show.S01E02.1080p.mkv
Show.S01E03.1080p.mkv
Show.S02E01.1080p.mkv
Show.S02E02.1080p.mkv
Show.S02E03.1080p.mkv

After running rena --match "Show\.S(\d+)E(\d+)\.1080p\.mkv" --match-rename "Show S${1} E${2} (1080p).mkv" Show/, it will result in:
Note: most shells will require escaping the $-sign

Show S01 E02 (1080p).mkv
Show S01 E03 (1080p).mkv
Show S02 E01 (1080p).mkv
Show S01 E01 (1080p).mkv
Show S02 E02 (1080p).mkv
Show S02 E03 (1080p).mkv

Dependencies

~9–20MB
~313K SLoC