给定一个文件的大小(以字节为单位) ,我想将其格式化为 < a href = “ https://en.wikipedia.org/wiki/Binary _ prefix”rel = “ noReferrer”> IEC (二进制)前缀 到 3 < a href = “ http://en.wikipedia.org/wiki/ignant _ figure”rel = “ noReferrer”> 有意义的数字 后面带零,例如,1883954变成1.80 M。
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 的评论。