md5sum para cada archivo (con ll)

md5sum para cada archivo (con ll)

Quiero un resultado como este: name size y hash:

myfile.txt 222M 24f4ce42e0bc39ddf7b7e879a
mynewfile.txt 353M a274613df45a94c3c67fe646

Por namey sizesolo yo tengo

ll -h | awk '{print $9,$10,$11,$12,$5}'

Pero, ¿cómo puedo obtener hashcada archivo? Lo intenté:

ll -h | awk '{print $9,$10,$11,$12,$5}' | md5sum

Pero solo obtengo un hash.

Respuesta1

No deberías analizar ls, en su lugar usa esto:

for f in * .*; do
  [ -f "$f" ] && \
    printf "%s %s %s\n" "$f" $(du -h -- "$f" | cut -f1) $(md5sum -- "$f" | cut -d' ' -f1)
done
  • El forbucle recorre todos los archivos y directorios del directorio actual.
    • [ -f "$f" ]comprueba si es un archivo normal
    • printf "%s %s %s\n"imprime los argumentos en el formato deseado.
    • "$f"el primer argumento es el nombre del archivo
    • du -h -- "$f" | cut -f1el segundo es el tamaño (legible por humanos), pero no el nombre del archivo, cutcorta todo excepto el primer campo
    • md5sum -- "$f" | cut -d' ' -f1el tercero es la suma MD5, pero sin el nombre del archivo.

información relacionada