我想要这样的输出: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 和,但没有文件名。