Ordinary people like their desktop environment but as a beard holder, i prefer a plain old dark terminal.
You probably know the mv command which lets you move a file. Most of the time it's ok, but sometime you may have a lot of files to rename with some common parts. And now starts hell.
You'll be able to bulk rename many files with some fancy options thanks to our beloved ZMV !
Here is a classic example where you want to rename a prefixed file :
Original | ▶ | Renamed |
---|---|---|
XXX-file1.jpg | ▶ | YYY-file1.jpg |
XXX-file2.jpg | ▶ | YYY-file2.jpg |
XXX-file3.jpg | ▶ | YYY-file3.jpg |
zmv 'XXX(\*)' 'YYY$1'
As easy as ABC.
zmv 'the_pattern_to_remove(*)' '$1-the_new_pattern'
To be safe, you should first use -n which won't do anything except showing you the potential result. There is also an interactive mode with -i where you need to acknowledge any edit.
Of course there are other options documented but these two are the most needed.
The extra-bonus comes from the globbing and modifiers support from ZSH but i won't explain it now. With these two features, it's possible to add criterias. ex : zmv ' ' '$f:gs/ /_' will replace spaces by underscores. I admit i can't recall this one but now I know i'll find it here each time i need it.
PS : To be able to use zmv you need to add autoload -U zmv in your ~/.zshrc.