md5sum для каждого файла (с ll)

md5sum для каждого файла (с ll)

Я хочу получить такой вывод: name size и hash:

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

Ибо nameтолько sizeу меня есть

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

Но как мне получить hashдля каждого файла? Я пробовал:

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

Но я получаю только один хэш.

решение1

Вам не следует разбирать ls, вместо этого используйте это:

for f in * .*; do
  [ -f "$f" ] && \
    printf "%s %s %s\n" "$f" $(du -h -- "$f" | cut -f1) $(md5sum -- "$f" | cut -d' ' -f1)
done
  • Цикл forпроходит по всем файлам и каталогам в текущем каталоге.
    • [ -f "$f" ]проверяет, является ли это обычным файлом
    • printf "%s %s %s\n"выводит аргументы в желаемом формате.
    • "$f"первый аргумент — имя файла
    • du -h -- "$f" | cut -f1второе - размер (удобочитаемый), но не имя файла, cutотсекает все поля, кроме первого
    • md5sum -- "$f" | cut -d' ' -f1третье — сумма MD5, но без имени файла.

Связанный контент