você está aqui: Home  → Arquivo de Mensagens

Você conhece o comando diff?

Colaboração: Rafael Henrique da Silva Correia

Data de Publicação: 30 de Setembro de 2009

Estava eu aqui em meu notebook quando me veio a cabeça que eu andava gravando arquivos de música repetidos em meus DVDs, daí comecei a repensar sobre os comandos da prova LPI101 (que trata muito sobre manipulação de streams texto), lembrei primeiramente do comando cmp, porém ele não seria útil para meu uso :s pois ele compara arquivos praticamente iguais entre si, com o cmp você poderia fazer isto:

  $ vim arquivo1.txt
  
  isto é apenas um teste
  bobinho
  para exemplo no dicas-l
  $ vim arquivo2.txt
  
  Isto é apenas um teste
  bobinho
  para exemplo no dicas-l
  $ cmp arquivo1.txt arquivo2.txt
  arquivo1.txt arquivo2.txt differ: byte 1, line 1

Ou seja o cmp me avisou que os dois arquivos são diferentes no primeiro byte da linha 1, ou seja, testo apenas se são diferentes. Porém com os conhecimentos que adquiri na LPI101 descobri que podemos fazer maravilhas com o formato texto! Aqui na minha casa eu salvo índices de DVDs usando apenas:

  $ ls -laR /media/cdrom0 > indice.txt

Com este comando listarei recursivamente TODOS os arquivos e diretórios do diretório descrito (/media/cdrom0). Daí para localizar arquivos que você gravou em algum n-ésimo :P DVD simplesmente você pode fazer uma busca no arquivo e descobrir em qual DVD você gravou o fujão, lembrando é claro que você terá que colocar o nome do DVD no arquivo de índice ou colocar um título antes de escrever tudo que tem dentro do DVD senão você não saberá qual N-ésimo DVD buscar na prateleira (uma caneta para escrever no DVD também ajuda :P).

Bom aí explicando o que fiz (finalmente)... Eu precisava saber quais as músicas que baixei no meu notebook ainda não haviam sido gravadas nos meus backups (sei que backup em DVD é meio precário, mas são apenas músicas :P) daí veio a solução diff :D. Observem:

  $ ls -laR /media/meubackup01 > ~/meus_backups

(tira o dvd1 e coloca o dvd2)

  $ ls -laR /media/meubackup02 >> ~/meus_backups

(tira o dvd2 e coloca o dvd3)

  $ ls -laR /media/meubackup03 >> ~/meus_backups

Aí você faz isso até que todos os backups (lembrando que quando me refiro a backups estou falando apenas dos nomes dos arquivos e diretórios contidos nos DVDs) tenham sido armazenados no seu arquivo meus_backups.

Depois simplesmente você gera um arquivo de texto novo com os arquivos/diretórios (no meu caso as músicas que estão no meu notebook) que você quer verificar (se estão gravados ou não) para isso:

  $ ls -laR ~/musicas > ~/musicas_pc

Agora simplesmente usaremos o diff desta forma:

  $ diff ~/musicas_pc ~/meus_backups

Explicando o resultado...

Os sinais de < significam que o arquivo só existe no arquivo ~/musicas_pc e os sinais de > significam que o arquivo só existe no arquivo ~/meus_backups. Com toda certeza a saída do diff pode ser tratada com filtros como o grep, o fgrep, o egrep, o tr, e etc mas isso pode ser tratado em uma nova dica!

Espero que a dica seja útil e vocês consigam organizar melhor seus arquivos pessoais, pois os meus eu acho facilmente mesmo tendo muuuuitos DVDs gravados!!

Usem a força do Shell!!

Abraço!! Até a próxima!!

Site pessoal: http://abraseucodigo.blogspot.com. Galera contribuam com a Tradução do projeto Debian!!! A gente precisa de ajuda na mailing-list!! Você aprenderá bastante traduzindo!! Aí vai o link para os interessados: http://www.debian.org/international/l10n/po-debconf/pt_BR#


Veja a relação completa dos artigos de Rafael Henrique da Silva Correia

 

 

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script