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