Bulk Rename Files
rename function on Arch is quite useful, but only has quite basic substitute options.
The format of the command is
rename <search-text> <replace-text> file-glob
For this example, create a few example files with
touch test1.md test2.md test3.md.
rename .md .html *.md rename test test00 *.html
The first command above changes the extension from “.md” to “.html”, and the second one adds a “00” after “test”. The files will end up as
There are a few useful options that
rename has; a good way to preview what might happen without actually changing any file names is to use the options
-n (no action) and
-v for verbose.
Here is an example:
rename -nv 00 '' *.html `test001.html' -> `test1.html' `test002.html' -> `test2.html' `test003.html' -> `test3.html'
Another useful option is
-i which is for interactive mode. This will prompt you to confirm each change in turn.
A more powerful alternative
There is a much more powerful alternative for
perl-rename (in some distributions this may be the default and actually called
rename, but not for Arch)
sudo pacman -S perl-rename touch test.md test2.md test3.md
This has perl regular expression type subsitution commands, and this first example capitalises all letters:
>> perl-rename -vn 'y/a-z/A-Z/' *.html test001.html -> TEST001.HTML test002.html -> TEST002.HTML test003.html -> TEST003.HTML
A slightly more unconventional example here replaces all instances of
perl-rename -vn 'y/te/sa/' *.html test001.html -> sass001.hsml test002.html -> sass002.hsml test003.html -> sass003.hsml
And finally a simple substituion example to update the extension again:
perl-rename -vn 's/.html$/.txt/' *.html test001.html -> test001.txt test002.html -> test002.txt test003.html -> test003.txt