25 votos

¿Cómo puedo listar recursivamente la suma Md5 de todos los archivos de un directorio y sus subdirectorios?

Quiero listar (y guardar) la suma de comprobación Md5 de todos los archivos de un directorio y guardar esa lista en un archivo de texto llamado md5sum.txt

también sería bueno si pudiera

  • Integrarlo dentro de tree (que crea una estructura de árbol de carpetas y archivos)
  • Hacer que funcione en carpetas y subcarpetas (esto es algo importante)

46voto

Zanna Puntos 502

Puede utilizar find (en el directorio)

find -type f -exec md5sum '{}' \; > md5sum.txt

Si quiere excluir el md5sum.txt el propio archivo, puede hacerlo:

find -type f \( -not -name "md5sum.txt" \) -exec md5sum '{}' \; > md5sum.txt

También se puede utilizar un bucle: activar el globbing recursivo

shopt -s globstar

Entonces, en el directorio:

for i in **; do [[ -f "$i" ]] && md5sum "$i" >> md5sum.txt; done

También puede excluir el propio archivo de éste:

for i in **; do 
  [[ -f "$i" ]] && 
  [[ md5sum.txt != "$i" ]] && 
  md5sum "$i" >> md5sum.txt
done

Ninguno de ellos produce un tree -como la estructura. Pero imprimen la ruta relativa al archivo desde el directorio inicial. Si desea la ruta absoluta, utilice find /path/to/directory ...

Es posible que desee desactivar globstar después ( shopt -u globstar )

2voto

Yaron Puntos 435

Puede ejecutar el siguiente comando:

md5sum /path/to/directory/* > /path_to_result/md5sum.txt

La salida en el archivo de resultados será algo así:

46684e3891d990acde2e723ee3d4e94a  /var/log/alternatives.log
39cf1ebf93452ed5f8b240b35ae73f9f  /var/log/alternatives.log.1
aa6c09c411d1d0870bca5f401d589332  /var/log/alternatives.log.2.gz

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: