Cómo comprobar si 2 directorios tienen el mismo contenido

Cómo comprobar si 2 directorios tienen el mismo contenido

¿Cuál es una manera fácil de verificar si 2 directorios diferentes tienen exactamente el mismo contenido?

Respuesta1

Una combinación de find, sha1sumy una serie de tuberías pueden lograr este objetivo:

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

Esto le dará un resultado como:

98f3a7c54a8f51dd86506a26d4d3bd90e6e4b821  -

Nota:Por supuesto, el guión final se puede ignorar.

Ejecute esto en las rutas que desea verificar y verá si dos directorios son iguales o no. Si no es así, puede comenzar a editar el comando para buscar los diferentes archivos. Una forma sencilla, aunque lenta, de hacer esto sería eliminar el archivo | cut -c1-40 | sha1sum, que enumerará cada archivo y su correspondiente hash sha1.

¿Cómo funciona esto?

  Explicación
find /path/to/files devuelve una lista de elementos del /path/to/filesdirectorio
-type f incluir solo archivos
-print0 Imprima el nombre completo del archivo en la salida estándar, seguido de un carácter nulo.
| y luego
sort -z ordenar la lista, usando nulo como delimitador de línea en lugar de una nueva línea
| y luego
xargs -0 sha1sum ejecutar cada valor de la lista a través desha1sum
| y luego
cut -c1-40 llevarjustolos primeros 40 caracteres (la longitud de un sha1
| y luego
sha1sum generar un hash sha1 de la lista de sha1s

información relacionada