Linux上のゲームサーバーに関する情報を提供するbashで記述された小さなutilツールに取り組んでいます。そのため、ファイルの内容のサイズを表示する可能性が必要です。
私はこれを使って今それをやっています:
du -Lshc *
それはほぼ完璧に動作します!唯一の欠点は、次のようなものが表示されることです。
21G backups
22G server
8.0K start.sh
151M world.Zip
43G total
これは問題ありませんが、もっと多くの桁が必要です。つまり、次のようになります。
21.587G backups
22.124G server
8.089K start.sh
151.198M world.Zip
43.436G total
それを行う可能性はありますか?
.sh
ファイルで使用するので、複雑なコマンドを使用してもかまいません。そのため、毎回手動で入力する必要はありません。
du -Lsbc * | awk '
function hr(bytes) {
hum[1024**4]="TiB";
hum[1024**3]="GiB";
hum[1024**2]="MiB";
hum[1024]="kiB";
for (x = 1024**4; x >= 1024; x /= 1024) {
if (bytes >= x) {
return sprintf("%8.3f %s", bytes/x, hum[x]);
}
}
return sprintf("%4d B", bytes);
}
{
print hr($1) "\t" $2
}
'
this に基づくawk-function。
column
にパイプするか、スペースを左に埋めることで、出力の見栄えを少し良くすることができます。
編集:左パディングを追加しました。
また、リストを並べ替えるには:du -Lsbc * | sort -n | awk
そしてawk-script。