Use join
para combinar linhas correspondentes dos dois arquivos. Supondo que os nomes dos arquivos vêm após as somas de verificação (como em md5sum
output) e não contêm espaço em branco, isso imprimirá todos os nomes de arquivos presentes nas duas listas, junto com a soma de verificação antiga e a nova soma de verificação:
join -1 2 -2 2 <(sort -k 2 oldlist) <(sort -k 2 newlist)
Para ver também novos arquivos, passe a opção -a
para join
. Um pouco de pós-processamento de saída irá remover os nomes de arquivo para os quais a soma de verificação não mudou.
join -a 2 -1 2 -2 2 <(sort -k 2 oldlist) <(sort -k 2 newlist) |
awk '$2 != $3'