【发布时间】:2020-04-08 09:26:08
【问题描述】:
给定下面的脚本
#/bin/sh
echo
echo treesize of `pwd` at `date +"%Y-%m-%d %H:%M:%S"`
echo
du -k --max-depth=1 | sort -nr | awk '
BEGIN {
split("KB,MB,GB,TB", Units, ",");
}
{
u = 1;
while ($1 >= 1024) {
$1 = $1 / 1024;
u += 1
}
$1 = sprintf("% *d%.1f %s", (7-length(sprintf("%.1f", $1))), 0, $1, Units[u]);
print $0;
}
'
echo
得到以下输出:
treesize of /home/jonathan at 2020-04-08 10:18:50
0295.4 GB .
0175.6 GB ./Documents
0118.5 GB ./vmware
047.9 MB ./Desktop
032.0 KB ./Pictures
012.0 KB ./Videos
04.0 KB ./.Public
请问如何删除前导 0 并使用空格? 欣赏剧本!归功于互联网上的某人:)
【问题讨论】:
-
你为什么不这样做:
$1 = sprintf("%8.1f %s", $1, Units[u]); -
感谢优化此 kvantour :) 工作正常!
标签: linux bash awk directory sizeof