Comparar arquivos no Ubuntu

Hoje arrumei um bom exemplo para a pergunta pra que usar a linha de comando no meu computador? Para mim a resposta é: para poder usar mini-utilitários e outras traquitanas que você podem ser criadas rapidamente.

Para gravar meus CDs e DVDs eu uso o K3b (que oficialmente é para KDE mas funciona sem problema no Gnome, como a maioria dos programas para KDE). Não sei se por culpa do modelo de gravador ou do software, se eu peço para ele verificar a gravação ao terminar ele dá aquela ejetadinha no disco, puxa de novo e começa a comparar (não lembro se o Nero faz a mesma coisa). Isso nem sempre funciona redondo e o programa acusa erro de leitura.

Não muito a fim de jogar fora a mídia e tentar de novo (perdendo tempo e dinheiro, muquirana que sou) fiz um scriptzeco para comparar todos os arquivos do CD com os originais do HD. Isso é feito com o comando cmp, que apesar do nome “comando” nada mais é do que um programinha-sem-tela. Aliás foi assim que o “Linux” nasceu: com um monte de malucos criando versões abertas dos comandinhos legais do Unix, o projeto GNU.

Como o cmp só compara arquivo por arquivo (cmp a.txt b.txt) eu precisava de uma maneira de ir arquivo por arquivo fazendo a comparação. Assim como Neston existem 1001 maneiras de fazer isso. Em bash, por exemplo, eu faria um loop entre todos os arquivos, etc. etc. Mas como o meu negócio é Ruby resolvi fazer o seguinte:

#! /usr/local/bin/ruby
Dir.new('/media/cdrom0').each do |f|
  if !(f =~ /^\./)
    puts f
    puts `cmp /media/cdrom0/#{f} ./#{f}`
  end
end

Seis linhas resolvem o meu problema. Imagine fazer isso com interface gráfica. Pode até ser fácil para alguns, mas seria o proverbial matar mosca com tiro de canhão. E eu não poderia publicar assim fácil no meu blog, para quem quiser sair usando. E, claro… como coloquei o código fonte você pode rodar isso com nenhuma ou poucas modificações em outros Unix, no OSX e provavelmente até no Windows.


:: Escrito por Cristiano Dias, dia 16 Nov 2006, 11:20, em Informática de vez em quando é bom,Nêeerd!.
© 2000-2008 Cristiano Dias. Alguns direitos reservados. Só alguns, não se preocupe.
Based on a tbeseda & 5ThirtyOne design. doismidela primeraza
RSS