Assumindo que todos os novos arquivos estão em (ou podem ser movidos para) novos / e todos os arquivos antigos estão em antigos / diretórios, você pode usar 'diff -ur old / new /' para ver as diferenças nos arquivos entre os diretórios .
Se você não se importa com a natureza das diferenças, apenas o fato de que alguns arquivos são diferentes, use grep para filtrar a saída - mas você perderá o código de saída do diff (1 = diferenças encontradas). Em vez disso, você pode usar o código de saída do grep (1 = nenhuma correspondência de expressão regular encontrada, o que você pode interpretar para significar que todos os arquivos são iguais).
por exemplo. Eu gerava alguns arquivos de texto no antigo e no novo (apenas lixo contendo listas de diretórios / bin, / sbin e / etc). então eu editei o novo / baz e deletei algumas linhas:
$ ls -l new old
new:
total 28
-rw-r--r-- 1 cas cas 11063 Sep 15 15:27 baz
-rw-r--r-- 1 cas cas 14529 Sep 15 15:25 foo
old:
total 20
-rw-r--r-- 1 cas cas 6843 Sep 15 15:24 bar
-rw-r--r-- 1 cas cas 12025 Sep 15 15:24 baz
primeiro, compare os dois diretórios:
$ diff -ur old new | egrep '^(Only|diff)'
Only in old: bar
diff -ur old/baz new/baz
Only in new: foo
$ echo $?
0
aqui você pode ver o código de saída quando os diretórios src e dst são os mesmos (ou têm exatamente o mesmo conteúdo)
$ diff -ur old old | egrep '^(Only|diff)'
$ echo $?
1
você também pode usar o cmp, mas ele só pode corresponder a arquivos individuais, ele não pode verificar recursivamente dois diretórios em busca de diferenças. você teria que escrever um wrapper for loop em torno dele, e você teria que levar em conta arquivos que existem apenas em novos, mas não em antigos. mais fácil de usar diff.