# GRU : G Rename Utility A **CLI tool** to batch rename files in the provided directory
Crates.io Version Crates.io Total Downloads GitHub Repo stars Crates.io License
# 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` then `cargo 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 -c, --clear use if you wanna clear the original titles and start naming from scratch (the extension will be kept) -p, --prefix Prefix to add for the naming -s, --suffix Suffix to add for the naming -m, --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 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 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 old String with a new one -e, --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 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 remove the first n characters from the original title -l, --last-n-remove remove the last n characters from the original title -r, --remove-all remove all occurrences of a string from the original title --remove-n remove n occurrences of a string (defaults to 1) from the original title (use --times to specify the number) --times use with remove_n to specify a number of occurrences to remove -t, --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](https://github.com/G1ya777/GRU/issues/new)** - any help would be appreciated.