每個檔案的 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 和,但不包含檔案名稱。

相關內容