rmv: Renaming made easy with regex
Go to file
Pedro de Oliveira 29fa9f5499 Allow to use "." as the input directory. 2023-05-08 01:17:53 +01:00
src Allow to use "." as the input directory. 2023-05-08 01:17:53 +01:00
.gitignore First commit. WIP, just prints the mv command. Untested. 2023-05-07 20:01:12 +01:00
Cargo.lock First commit. WIP, just prints the mv command. Untested. 2023-05-07 20:01:12 +01:00
Cargo.toml Add README.md and LICENSE. 2023-05-07 20:18:13 +01:00
LICENSE Add README.md and LICENSE. 2023-05-07 20:18:13 +01:00
README.md Rewrite the `--wildcard` phrase so that it looks like the previous ones. 2023-05-08 00:05:27 +01:00

README.md

rmv: Renaming made easy with regex

rmv is a command-line tool that allows you to rename files in a directory using regular expressions. You can use it to match patterns in filenames and replace them with new patterns.

Installation

To install rmv, Rust needs to be installed. Once Rust is installed, run the following command:

cargo install --git https://git.deadbsd.org/falso/rmv.git

Usage

To use rmv, you need to specify the path to the directory where the files to be renamed are located, a regular expression pattern to match against the filenames, and a replacement pattern for the matched filenames.

rmv --path <PATH> --pattern <PATTERN> --replacement <REPLACEMENT>

--path

The --path argument specifies the path to the directory where the files to be renamed are located. This argument is required.

--pattern

The --pattern argument specifies the regular expression pattern to match against the filenames. This argument is required.

You can use matching groups in the pattern to capture parts of the filename that you want to use in the replacement pattern. For example, the pattern "S(\d+)E(\d+)" will match on "S01E23" and capture "01" in group 1 and "23" in group 2.

--replacement

The --replacement argument specifies the replacement pattern for the matched filenames. This argument is required.

You can use reference groups in the pattern by using \1, \2, etc. to refer to the captured groups in the --pattern argument. For example, if you have a pattern "S(\d+)E(\d+)" that matches "S01E11" and you want to replace it with "Season 01 Episode 11", you can use the following replacement pattern: "Season \1 Episode \2".

You can also use the following special tags in the replacement pattern:

  • {full_name} - file name with extension
  • {name} - filename without extension
  • {ext} - extension

--wildcard (optional)

The --wildcard argument specifies a wildcard pattern to filter which files in the directory are considered. Only files whose names match the wildcard will be renamed. The default value is "*".

For example, if you want to only rename files with the .mkv extension, you can use the wildcard pattern "*.mkv".

Example

$ rmv --path /path/to/files --pattern "S(\d+)E(\d+)" --replacement "Season \1 Episode \2.{ext}" --wildcard "*.mkv"

This will match all filenames in the directory that match the pattern "S(\d+)E(\d+)" and replace them with the pattern "Season \1 Episode \2.{ext}". Only files with the ".mkv" extension will be considered.

mv "Not Warez - S01E16 - HDTV-720p.mkv" "Season 01 Episode 16.mkv"
mv "Not Warez - S01E17 - HDTV-720p.mkv" "Season 01 Episode 17.mkv"
mv "Not Warez - S01E18 - HDTV-720p.mkv" "Season 01 Episode 18.mkv"
mv "Not Warez - S01E19 - HDTV-720p.mkv" "Season 01 Episode 19.mkv"
mv "Not Warez - S01E20 - WEBDL-1080p.mkv" "Season 01 Episode 20.mkv"
mv "Not Warez - S01E21 - WEBDL-1080p.mkv" "Season 01 Episode 21.mkv"

Options

Here are the available options:

-i, --path <PATH>
    Path to the directory where the files to be renamed are located

-s, --pattern <PATTERN>
    Regular expression pattern to match against the filenames in the directory.
    The pattern should contain match groups (expressed in parentheses).
    Example: "S(\d+)E(\d+)"

-r, --replacement <REPLACEMENT>
    Replacement pattern for the matched filenames.
    You can use `\1`, `\2`, etc. to reference the match groups in the pattern.
    There are also the following tags available:
    * {full_name} - file name with extension
    * {name} - filename without extension
    * {ext} - extension
    Example: "Season \1 Episode \2.{ext}"

-w, --wildcard <WILDCARD>
    Filename wildcard to filter the files to be renamed in the directory.
    For example, "*.mkv" will match all files with the ".mkv" extension.
    [default: *]

-h, --help
    Print help (see a summary with '-h')

-V, --version
    Print version

License

This tool is licensed under the WTFPL. See the LICENSE file for details.