17 releases (8 breaking)
0.9.1 | Mar 11, 2024 |
---|---|
0.8.2 | Mar 9, 2024 |
0.4.1 | Oct 22, 2023 |
#421 in Command line utilities
34KB
598 lines
GRU : G Rename Utility
A CLI tool to batch rename files in the provided directory
Key features
- Backup file generated after every use
- Avoids cycles
- dry-run flag to preview changes
- Detects and uses the correct padding for numbering
- Ignore/Include hidden files
- Random order
- Target only one extension
- Append CRC32 checksum in Hexadecimal at the end of each file name
- Replace extension
- Replace n or all occurrences of a string
- Convert Unicode to ASCII representation
- All the basic stuff like clear original names, numbering, add prefix, remove n first...
- Linux and Windows are supported, it should also work on macOS, but I can't test
Install
- using cargo :
cargo install rename-gru
- or build from source
git clone https://github.com/G1ya777/GRU && cd GRU
thencargo build
- on Arch Linux install from the AUR the package
rename-gru-git
Usage examples
- Example file tree
├── audios
│ ├── hit.mp3
│ ├── other.mp3
│ ├── song.mp3
│ └── test.mp3
├── images
│ ├── image.png
│ ├── img1.png
│ ├── img2.png
│ └── otherimg.png
├── other
│ ├── data
│ │ └── somefile
│ ├── file
│ └── video.mp4
└── videos
├── file1.mkv
├── file2.mkv
├── file.mkv
└── other_video.mkv
rename-gru --clear --main-filename " - main - " --prefix "prefix" -suffix " - suffix" --numbering ./other
data -------> prefix - main - 1 - suffix
file -------> prefix - main - 2 - suffix
video.mp4 -------> prefix - main - 3 - suffix.mp4
- rename video files, add tags at the end
rename-gru ./videos --clear --prefix "MTVS" --numbering --suffix "[AWSMUploader] [1080P]""
file.mkv -------> MTVS1[AWSMUploader] [1080P].mkv
file1.mkv -------> MTVS2[AWSMUploader] [1080P].mkv
file2.mkv -------> MTVS3[AWSMUploader] [1080P].mkv
other_video.mkv -------> MTVS4[AWSMUploader] [1080P].mkv
- rename background files, use random ordering
rename-gru ./images --clear --prefix "bg" --numbering --sort-by 3
image.png -------> bg1.png
img2.png -------> bg2.png
otherimg.png -------> bg3.png
img1.png -------> bg4.png
- keep title and add numbering at the start of the file
rename-gru ./images --main-filename " - " -B --numbering -b --sort-by 3
image.png -------> 1 - image.png
otherimg.png -------> 2 - otherimg.png
img2.png -------> 3 - img2.png
img1.png -------> 4 - img1.png
- rename .mp4 file only
rename-gru ./other --clear --prefix "my_video" --numbering --sort-by 3 -t ".mp4"
video.mp4 -------> my_video1.mp4
- rename folders only
rename-gru ./other --only-folders -n
data -------> data1
- append CRC32 checksum at the end of each filename
rename-gru --crc ./videos
file.mkv -------> file [AA98C6D9].mkv
file1.mkv -------> file1 [26022818].mkv
file2.mkv -------> file2 [1B5BD171].mkv
other_video.mkv -------> other_video [23233DEC].mkv
- restore original file names
rename-gru ./videos --restore "./videos/grubcp-2023-10-22-18-17-23.json"
Usage
A CLI tool to batch rename files in the provided directory
Usage: rename-gru [OPTIONS] [LOCATION]
Arguments:
[LOCATION] location of the files to rename (defaults to the current location)
Options:
--restore <RESTORE>
-c, --clear
use if you wanna clear the original titles and start naming from scratch (the extension will be kept)
-p, --prefix <PREFIX>
Prefix to add for the naming
-s, --suffix <SUFFIX>
Suffix to add for the naming
-m, --main-filename <MAIN_FILENAME>
add a main filename (when --clear isn't used it is added after the original filename)
-B
add the main filename before the original filename when --clear isn't used
-n, --numbering
Add numbering
--pad <PAD>
specify padding for numbering, use --no-pad to disable (defaults to number of digits of number of files - 1)
--no-pad
-b, --before-main-name
numbering position, can be before main_filename or after main_filename (default)
--start <START>
custom numbering start (default is 1)
--crc
add crc32 checksum in hex at the end each filename (folders won't be renamed if this option is used)
--replace <Replace> <Replace_with>
replace old String with a new one
-e, --extension-replace-by <EXTENSION_REPLACE_BY>
replace the extension of the original title of all files with a new one (eg: .mp3) (also use -t to target files with a certain extension)
--sort-by <SORT_BY>
how to sort files, default is 0 (by name), 1 is by modification date, 2 for date created, 3 for random
--desc
set file sort to descending
--only-files
only modify files and don't modify folders
--only-folders
only modify folders and don't modify files
-f, --first-n-remove <FIRST_N_REMOVE>
remove the first n characters from the original title
-l, --last-n-remove <LAST_N_REMOVE>
remove the last n characters from the original title
-r, --remove-all <REMOVE_ALL>
remove all occurrences of a string from the original title
--remove-n <REMOVE_N>
remove n occurrences of a string (defaults to 1) from the original title (use --times to specify the number)
--times <TIMES>
use with remove_n to specify a number of occurrences to remove
-t, --target-extension <TARGET_EXTENSION>
apply renaming only to files ending with provided extension (eg : .jpg)
--no-bcp
disable backing up the original filenames
--no-temp-rename
disable temporary renaming (used to avoid cycles)
--incl-hidden
also rename hidden files (turn off by default)
--to-ascii
convert utf-8 to ascii
--dry-run
use to preview file names, w/o writing
--noconfirm
perform rename w/o asking for y/n
-h, --help
Print help
-V, --version
Print version
Found a bug or want a new feature ?
- Issues
- any help would be appreciated.
Dependencies
~3–15MB
~128K SLoC