给定文件以字节为单位的大小,我想用将其格式化为3 ,并带有尾随零,例如1883954变成1.80M。
bash不支持浮点运算,所以我改用awk。问题是我不知道如何保持尾随零。当前解决方案:
if [ $size -ge 1048576 ]
then
size=$(awk 'BEGIN {printf "%.3g",'$size'/1048576}')M
elif [ $size -ge 1024 ]
then
size=$(awk 'BEGIN {printf "%.3g",'$size'/1024}')K
fi
(文件不是很大,所以我不需要考虑更大的单元。)
编辑:这还有另一个问题。请参阅下面Adrian Frühwirth的评论。
发布于 2013-12-12 09:27:18
GNU Coreutils包含一个名为numfmt
的小工具,用于进行数字转换,这显然不为人所知,它可以做您需要的事情:
$ numfmt --to=iec-i --suffix=B --format="%.3f" 4953205820
4.614GiB
我认为这很适合你的需求,而且不像其他答案那样庞大或老套。
如果你想要一个更强大的解决方案,请看我的另一个答案。
发布于 2013-04-07 02:36:27
有没有什么原因让你不使用
ls -lh
司令部?如果您使用的是最近几年发布的Linux系统,则可以使用此功能。
发布于 2015-02-23 05:00:55
ls -lah /path/to/your/file | awk -F " " {'print $5'}
https://stackoverflow.com/questions/15854332
复制相似问题