如何通过终端将千字节转换为兆字节或千兆字节?

如何通过终端将千字节转换为兆字节或千兆字节?

我尝试查找磁盘的大小,因此我运行了以下命令

$ sudo fdisk -s /dev/sda
976762584

显示的内容如上。我认为976762584磁盘的大小()以千字节为单位显示。如何通过终端将值转换为兆字节或千兆字节以便更好地理解?

答案1

numfmt(部分GNU 核心实用程序) 可以在这里使用:

$ sudo fdisk -s /dev/sda
976762584

$ sudo fdisk -s /dev/sda | numfmt --to=iec-i --suffix=B --format="%.2f"
931.52MiB

答案2

shell 执行固定宽度整数运算,不检查溢出。因此,在进行可能涉及大数或分数的计算时,bc这是一个不错的选择。要获取兆字节:

$ echo "scale=2; $(sudo fdisk -s /dev/sda6) / 1024" | bc
13641.75

要获取千兆字节:

$ echo "scale=2; $(sudo fdisk -s /dev/sda6) / 1024^2" | bc
12.70

作业scale=2要求bc显示两位小数。

答案3

在 awk 中

要查找磁盘的大小(以兆字节为单位),

$ sudo fdisk -s /dev/sda | awk '{$1=$1/1024; print $1,"MB";}'
953870 MB

要查找磁盘的大小(以 GB 为单位),

$ sudo fdisk -s /dev/sda | awk '{$1=$1/(1024^2); print $1,"GB";}'
931.513 GB

答案4

如果大小以千字节为单位,则需要通过 Bash 内置表达式进行计算。假设块大小 = 512B,您必须输入:

echo $((`fdisk -s /dev/sda`*512/1024))

这将以 KiB 为单位显示磁盘大小。要进一步操作,只需/1024在表达式末尾添加:

echo $((`fdisk -s /dev/sda`*512/1024/1024))

这将显示磁盘大小(以 MiB 为单位)等等。

相关内容