当前位置: 首页 > 面试题库 >

可读格式的文件大小

萧霍英
2023-03-14
问题内容

给定文件大小(以字节为单位),我想使用
IEC(二进制)前缀 将其格式化为 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

(文件不是那么大,所以我不必考虑更大的单位。)

编辑:这还有另一个问题。请参阅下面的AdrianFrühwirth的评论。


问题答案:

GNU
Coreutils
包含一个显然不为人所知的numfmt用于数字转换的小工具,它可以满足您的需求:

$ numfmt --to=iec-i --suffix=B --format="%.3f" 4953205820
4.614GiB

我认为这很适合您的需求,并且不如其他答案那么大。

如果您需要更强大的解决方案,请查看我的其他答案。



 类似资料:
  • fscanf() 和 fprintf() 函数与前面使用的 scanf() 和 printf() 功能相似,都是格式化读写函数,两者的区别在于 fscanf() 和 fprintf() 的读写对象不是键盘和显示器,而是磁盘文件。 这两个函数的原型为: fp 为文件 指针,format 为格式控制字符串,... 表示参数列表。与 scanf() 和 printf() 相比,它们仅仅多了一个 fp 参

  • 我将JSON数据存储为字符串(从)到文件。但是复杂的数据对人类来说是不可读的,因为缺少换行符和缩进。

  • 本文向大家介绍PHP使用适合阅读的格式显示文件大小的方法,包括了PHP使用适合阅读的格式显示文件大小的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP使用适合阅读的格式显示文件大小的方法。分享给大家供大家参考。具体分析如下: 文件大小显示,例如 1.7K , 2.9M 代码如下: 希望本文所述对大家的php程序设计有所帮助。

  • 本文向大家介绍C#读取csv格式文件的方法,包括了C#读取csv格式文件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#读取csv格式文件的方法。分享给大家供大家参考。具体实现方法如下: 一、CSV文件规则   1 开头是不留空,以行为单位。 2 可含或不含列名,含列名则居文件第一行。 3 一行数据不跨行,无空行。 4 以半角逗号(即,)作分隔符,列为空也要表达其存在。 5 列内

  • 我有一个绑定到两个属性的标签。第一个值(DeletedFileCountProperty)是一个简单的int,无需格式化。但是,如何将第二个属性(SimpleLongProperty)格式化为人类可读的filesize值? 示例:的值为1000000。标签应显示“1MB”。 我可以调用绑定中的函数来让此函数格式化值吗? 迄今为止我的代码: 谢谢

  • 我想将下面的时间戳转换为可读的日期时间。 如何将2221206.786之类的数字转换为日期和时间?