每个文件的 md5sum(带有 ll)

每个文件的 md5sum(带有 ll)

我想要这样的输出:name sizehash

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

为了namesize只有我拥有

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 和,但没有文件名。

相关内容