Thursday 1 April, 2010

Songs list from files list

I had a list of mp3 files like:

ANBE_VAA_ARUGILE.MP3
ANBU_THAYAE.MP3
ANDANVAN_THEANAKTRU.MP3
ANNANENNA.MP3

and wanted the list of song names from this… What shall we do?

* Open Cygwin (Unix emulator within Windows), navigate to that folder, do:
      ls | cut -d. -f1 |  sed –e 's/_/ /g'
   list the files in this directory, cut and extract the 1st field with delimiter as . character, then substitute space character in place of _ character globally. In other words, get the actual filename removing the .mp3 extension, then replace underscores with spaces.

* Save the above output to a file
     Actually this too should be a part of the above step, like:
      ls | cut -d. -f1 |  sed –e 's/_/ /g' > ./songnames.txt
     The file songnames.txt now has:

ANBE VAA ARUGILE
ANBU THAYAE
ANDANVAN THEANAKTRU
ANNANENNA

* Open the file in Vim editor, and select all the text by pressing ggVG. Then, press : to enter command mode, and Vim will show :’<,’> and wait for your input. Type this:
    !perl –lpe "@words = map { ucfirst(lc($_)) } split; $_ = join(\" \", @words)"
and press enter, and voila, the list has become:

Anbe Vaa Arugile
Anbu Thayae
Andanvan Theanaktru
Annanenna

Beautiful, isn't it?
Thank God, Unix exists! :)

2 comments:

Meenakshi said...

Excellent usage for such coding options :) nice thought

Randy A MacDonald said...

No need to use a bunch of tools and interfaces, when one line of APL will do:

DISP aa
┌────────────────────┬───────────────┬───────────────────────┬─────────────┐
│ANBE_VAA_ARUGILE.MP3│ANBU_THAYAE.MP3│ANDANVAN_THEANAKTRU.MP3│ANNANENNA.MP3│
└────────────────────┴───────────────┴───────────────────────┴─────────────┘
DISP {1↓' ' SSofENC {(⍬⍴⍵),lowercase 1↓⍵}¨ENCofSS' ',{s←⍵⋄((s='_')/s)←' '⋄s}{(¯1+⍵⍳'.')↑⍵}⍵}¨aa
┌────────────────┬───────────┬───────────────────┬─────────┐
│Anbe Vaa Arugile│Anbu Thayae│Andanvan Theanaktru│Annanenna│
└────────────────┴───────────┴───────────────────┴─────────┘