Como verificar se 2 diretórios têm o mesmo conteúdo

Como verificar se 2 diretórios têm o mesmo conteúdo

Qual é uma maneira fácil de verificar se dois diretórios diferentes têm exatamente o mesmo conteúdo?

Responder1

Uma combinação de find, sha1sume uma série de tubos pode atingir este objetivo:

find /path/to/files -type f -print0 | sort -z | xargs -0 sha1sum | cut -c1-40 | sha1sum

Isso lhe dará uma saída como:

98f3a7c54a8f51dd86506a26d4d3bd90e6e4b821  -

Observação:O traço final pode ser ignorado, é claro.

Execute-o no(s) caminho(s) que deseja verificar e verá se dois diretórios são iguais ou não. Caso contrário, você pode começar a editar o comando para localizar os diferentes arquivos. Uma maneira simples, embora demorada, de fazer isso seria remover o | cut -c1-40 | sha1sum, que listará cada arquivo e seu hash sha1 correspondente.

Como é que isso funciona?

  Explicação
find /path/to/files retorna lista de itens do /path/to/filesdiretório
-type f incluir apenas arquivos
-print0 imprima o nome completo do arquivo na saída padrão, seguido por um caractere nulo
| e então
sort -z classifique a lista, usando null como delimitador de linha em vez de uma nova linha
| e então
xargs -0 sha1sum execute cada valor da lista atravéssha1sum
| e então
cut -c1-40 pegarapenasos primeiros 40 caracteres (o comprimento de um sha1
| e então
sha1sum gerar um hash sha1 da lista de sha1s

informação relacionada