
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
, sha1sum
e 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/files diretó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 |