rename command

Yesterday, the new Bad Bad Hats record was released, so I downloaded it from Bandcamp!

cd ~/Music/BadBadHats
mkdir Walkman
cd !$
unzip -l ~/Downloads/Bad\ Bad\ Hats\ -\ Walkman\ \(pre-order\).zip

Don't mind that pre-order bit, it's the full record. Let's unzip it!

❯ unzip ~/Downloads/Bad\ Bad\ Hats\ -\ Walkman\ \(pre-order\).zip 
Archive:  /home/tim/Downloads/Bad Bad Hats - Walkman (pre-order).zip
 extracting: Bad Bad Hats - Walkman - 01 Walkman.flac  
 extracting: Bad Bad Hats - Walkman - 02 Detroit Basketball.flac  
 extracting: Bad Bad Hats - Walkman - 03 Always On Time.flac  
 extracting: Bad Bad Hats - Walkman - 04 Gloria Love.flac  
 extracting: Bad Bad Hats - Walkman - 05 Priority.flac  
 extracting: Bad Bad Hats - Walkman - 06 Quarter Past.flac  
 extracting: Bad Bad Hats - Walkman - 07 Milky Way.flac  
 extracting: Bad Bad Hats - Walkman - 08 Only Static.flac  
 extracting: Bad Bad Hats - Walkman - 09 Awkward Phase.flac  
 extracting: Bad Bad Hats - Walkman - 10 Year Of The Crab.flac  
 extracting: cover.jpg

Hooray! But I like to rename the files to be just the track number and title (the band name and album name are in the parent directories).

Debian supplies multiple rename commands. I like the Perl one originally written by Larry Wall some thirty years ago.

sudo apt install rename

It uses regular expressions to manipulate the filenames, so to just chop off the stuff at the beginning, we could write 's/^Bad Bad Hats - Walkman - //'. It has a -n option for a dry run, so we can see what it would do without actually doing it.

❯ rename -n 's/^Bad Bad Hats - Walkman - //' *.flac
rename(Bad Bad Hats - Walkman - 01 Walkman.flac, 01 Walkman.flac)
rename(Bad Bad Hats - Walkman - 02 Detroit Basketball.flac, 02 Detroit Basketball.flac)
rename(Bad Bad Hats - Walkman - 03 Always On Time.flac, 03 Always On Time.flac)
rename(Bad Bad Hats - Walkman - 04 Gloria Love.flac, 04 Gloria Love.flac)
rename(Bad Bad Hats - Walkman - 05 Priority.flac, 05 Priority.flac)
rename(Bad Bad Hats - Walkman - 06 Quarter Past.flac, 06 Quarter Past.flac)
rename(Bad Bad Hats - Walkman - 07 Milky Way.flac, 07 Milky Way.flac)
rename(Bad Bad Hats - Walkman - 08 Only Static.flac, 08 Only Static.flac)
rename(Bad Bad Hats - Walkman - 09 Awkward Phase.flac, 09 Awkward Phase.flac)
rename(Bad Bad Hats - Walkman - 10 Year Of The Crab.flac, 10 Year Of The Crab.flac)

That looks right, let her rip!

❯ rename 's/^Bad Bad Hats - Walkman - //' *.flac

❯ ls
'01 Walkman.flac'             '07 Milky Way.flac'
'02 Detroit Basketball.flac'  '08 Only Static.flac'
'03 Always On Time.flac'      '09 Awkward Phase.flac'
'04 Gloria Love.flac'         '10 Year Of The Crab.flac'
'05 Priority.flac'             cover.jpg
'06 Quarter Past.flac'

Supergood! Let's fire it up in parole!

Walkman playing in parole