.png)
次のような出力が欲しいです: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 つしか取得できません。
答え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 サムですが、ファイル名はありません。