ファイルあたりmd5sum(LLを含む)

ファイルあたりmd5sum(LLを含む)

私は次の出力が欲しい:name sizehash

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 -f12番目はサイズ(人間が読める)ですが、ファイル名ではありません。cut最初のフィールドを除くすべての項目を削除します。
    • md5sum -- "$f" | cut -d' ' -f13番目はMD5の合計ですが、ファイル名はありません。

おすすめ記事