给定文件的大小(以字节为单位),我想用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
(文件不是那么大,所以我不必考虑更大的单位。)
编辑:这还有另一个问题。请参阅下面的 Adrian Frühwirth 的评论。