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

[119354]bash [119883]расширение параметра[119884]: используйте значение по умолчанию, если переменная не установлена или нулевая:

выходите из привычки использовать [119885]$ALL_CAPS_VARNAMES[119886] -- в один прекрасный день вы используете "PATH" и разбиваете ваш скрипт.[119357].

1
31.10.2015, 23:45
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, но без имени файла.
5
27.01.2020, 23:16

Теги

Похожие вопросы