GNU/Linux Desktop Survival Guide
by Graham Williams
20190204 There are times when we have a directory of files with some confused mixture of uppercase and lowercase names. On GNU/Linux the case of a filename is significant and thus we need to know how the precise capitalisation of a name in order to find a file. As a tradition filenames on Linux are typically all lowercase though today we also see mixed case filenames quite commonly. Non-the-less there are times when we may like to lowercase our filenames.
$ ls Lemon_Squeeze_Track_01_Juice.abc Lemon_Squeeze_Track_02_Justice-and-Penalty.abc Lemon_Squeeze_Track_03_Junior-and-Petite.abc Lemon_Squeeze_TRACK_04_Jump-and-Pan.abc ...
We use rename with the y operator to lowercase
the names of all files in the current directory. The y
operator translates from one sequence of characters to another. The
-n is short for
--nono and will report what the
command would do but not actually do it. The wildcard for the filename
*) will expand to all files in the current directory
but rename will only operate on those files whose filename
matches the transformation string.
$ rename -n 'y/A-Z/a-z/' * rename(Lemon_Squeeze_Track_01_Juice.abc, lemon_squeeze_track_01_juice.abc) rename(Lemon_Squeeze_Track_02_Justice-and-Penalty.abc, lemon_squeeze_track_02_j... rename(Lemon_Squeeze_Track_03_Junior-and-Petite.abc, lemon_squeeze_track_03_jun... rename(Lemon_Squeeze_TRACK_04_Jump-and-Pan.abc, lemon_squeeze_track_04_jump-and... ...
If the promise is correct then we can execute the command, using
-v, short for
--verbose, in case a mistake is
made. If a mistake is made can copy the verbose output into a script
file and effectively create a script to undo the renaming.
$ rename -v 'y/A-Z/a-z/' * Lemon_Squeeze_Track_01_Juice.abc renamed as lemon_squeeze_track_01_juice.abc Lemon_Squeeze_Track_02_Justice-and-Penalty.abc renamed as lemon_squeeze_track_0... Lemon_Squeeze_Track_03_Junior-and-Petite.abc renamed as lemon_squeeze_track_03_... Lemon_Squeeze_TRACK_04_Jump-and-Pan.abc renamed as lemon_squeeze_track_04_jump-... ...
Our result is then a directory of files with all lowercase filenames.
$ ls lemon_squeeze_track_01_jusice.abc lemon_squeeze_track_02_justice-and-penalty.abc lemon_squeeze_track_03_junior-and-petite.abc lemon_squeeze_track_04_jump-and-pan.abc ...