
¿Cuál es una manera fácil de verificar si 2 directorios diferentes tienen exactamente el mismo contenido?
Respuesta1
Una combinación de find
, sha1sum
y 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/files directorio |
-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 |