每个文件的 md5sum(带 ll)

Vit*_*ich 1 command-line hashsum files

我想要这样的输出:name sizehash

myfile.txt 222M 24f4ce42e0bc39ddf7b7e879a
mynewfile.txt 353M a274613df45a94c3c67fe646
Run Code Online (Sandbox Code Playgroud)

因为name而且size只有我有

ll -h | awk '{print $9,$10,$11,$12,$5}'
Run Code Online (Sandbox Code Playgroud)

但是我怎样才能得到hash每个文件?我试过:

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

但我只得到一个哈希值。

cha*_*aos 5

你不应该解析 ls,而是使用这个:

for f in * .*; do
  [ -f "$f" ] && \
    printf "%s %s %s\n" "$f" $(du -h -- "$f" | cut -f1) $(md5sum -- "$f" | cut -d' ' -f1)
done
Run Code Online (Sandbox Code Playgroud)
  • for循环运行槽在当前目录下的所有文件和目录。
    • [ -f "$f" ] 检查它是否是一个普通文件
    • printf "%s %s %s\n" 以所需格式打印参数。
    • "$f" 第一个参数是文件名
    • du -h -- "$f" | cut -f1第二个是大小(人类可读),但不是文件名,cut将除第一个字段之外的所有内容全部删除
    • md5sum -- "$f" | cut -d' ' -f1 第三个是 MD5 总和,但没有文件名。