99 lines
4.0 KiB
Markdown
99 lines
4.0 KiB
Markdown
# 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](https://www.rust-lang.org/) needs to be installed. Once Rust is installed, run the following command:
|
|
|
|
```sh
|
|
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
|
|
|
|
```shell
|
|
$ 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.
|
|
|
|
```shell
|
|
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:
|
|
|
|
```sh
|
|
-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](LICENSE) file for details. |