GNU/Linux Desktop Survival Guide
by Graham Williams |
|||||
Lowercase Filenames |
20200915 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 transliteration operator y
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 argument (*
) 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 ... |