Comparar múltiplos arquivos

2

Eu quero um script bash para comparar OU encontrar diferenças para vários arquivos armazenados em locais diferentes:

Arquivos sob /tmp/test/

  • A.txt
  • B.txt
  • C.txt

Compare com arquivos em /home/oldtest /

  • A.txt
  • B.txt
  • C.txt

Condição:

  1. O arquivo /tmp/test/A.txt compara somente com /home/oldtest/A.txt (da mesma forma para outros arquivos - B.txt compara com B.txt ).

  2. Se alguma alteração for encontrada: o status deve ser "Modificação requerida no arquivo A.txt".

por daya 02.04.2013 / 13:34

4 respostas

4

diff do GNU diffutils tem uma opção para comparação recursiva:

diff -qrs /dir/A /dir/B

compara os diretórios: -q silenciosamente (ou seja, nenhuma diferença é impressa, apenas os arquivos diferem), -r recursivamente (árvores completas com todos os subdiretórios), -s relatando arquivos idênticos.

    
por 02.04.2013 / 16:50
2
cd /tmp/test
for i in *.txt; do diff -q $i /home/oldtest/$i; done

A saída será "Arquivos A.txt e ../home/oldtest/A.txt diferem" para cada arquivo que tenha uma diferença.

    
por 02.04.2013 / 14:10
1

Não tenho certeza se alguém irá escrever um script, mas você pode obter uma funcionalidade semelhante usando diff . Apenas use diff -q .

Por exemplo:

$ diff -q .vimrc .bashrc
Files .vimrc and .bashrc differ

Se você quiser automatizar isso, use um script.

Para uma boa referência sobre como aprender a escrever scripts bash, dê uma olhada aqui: link

    
por 02.04.2013 / 13:46
1
cd /tmp/test/;
for x in *; do \
  cmp -s "$x" /home/oldtest/"$x" || echo "Modification required in file $x";
done;|more
    
por 20.02.2016 / 16:08