De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
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 pois 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 DVD simplesmente você pode fazer uma busca no
arquivo e descobrir em qual DVD você gravou o fujão. É 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).
Bom, aí explicando o que fiz (finalmente)... Eu precisava saber quais
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)
daí veio a solução diff
. 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
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!!
Blog do autor
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#
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários