Vamos fingir que você é um cara mau que ao invés de comprar CDs legalmente (como eu sempre faço e você também) baixa discografias completas na internet, como por exemplo a do Beatles. Ao terminar de baixar 3 GB com mais de 20 CDs você nota que os arquivos não estão corretamente taggeados e com isso você bagunçaria a organização perfeita do seu computador, do seu iPod ou de qualquer outro aparelho que você use pra ouvir música. O que fazer? Apelar para o Ruby com a Taglib, é claro! (Ubuntu: apt-get install libtagc0-ruby)
Vejam como é simples e adaptem para as suas necessidades:
require "taglib"
`ls BEATLES`.split("n").each do |album|
`ls "BEATLES/#{album}"`.split("n").each do |filename|
path="BEATLES/#{album}/#{filename}"
if filename.match(/mp3$/) then
file=TagLib::File.new(path)
a=filename.split(" - ")
track=a[a.length-2].to_i
title=a[a.length-1].gsub(/.mp3/, '')
file.track=track
file.genre="Pop/Rock"
file.artist="The Beatles"
file.album=album
file.title=title
file.save
file.close
else
puts "Tem um lixo por aí... Delete '#{path}'!"
end
end
end