各ファイルの md5sum (ll 付き)

各ファイルの md5sum (ll 付き)

次のような出力が欲しいです:name size そしてhash:

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 つしか取得できません。

答え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 サムですが、ファイル名はありません。

関連情報