首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >以人类可读格式表示的文件大小

以人类可读格式表示的文件大小
EN

Stack Overflow用户
提问于 2013-04-07 02:10:28
回答 7查看 72.1K关注 0票数 67

给定文件以字节为单位的大小,我想用将其格式化为3 ,并带有尾随零,例如1883954变成1.80M。

bash不支持浮点运算,所以我改用awk。问题是我不知道如何保持尾随零。当前解决方案:

代码语言:javascript
复制
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的评论。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2013-12-12 09:27:18

GNU Coreutils包含一个名为numfmt的小工具,用于进行数字转换,这显然不为人所知,它可以做您需要的事情:

代码语言:javascript
复制
$ numfmt --to=iec-i --suffix=B --format="%.3f" 4953205820
4.614GiB

我认为这很适合你的需求,而且不像其他答案那样庞大或老套。

如果你想要一个更强大的解决方案,请看我的另一个答案。

票数 73
EN

Stack Overflow用户

发布于 2013-04-07 02:36:27

有没有什么原因让你不使用

代码语言:javascript
复制
ls -lh

司令部?如果您使用的是最近几年发布的Linux系统,则可以使用此功能。

票数 139
EN

Stack Overflow用户

发布于 2015-02-23 05:00:55

代码语言:javascript
复制
ls -lah /path/to/your/file | awk -F " " {'print $5'}
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15854332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档