.png)
Я хочу получить такой вывод: 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, но без имени файла.