You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用df计算总磁盘空间?如何修改df -h命令汇总结果?

关于df命令磁盘空间计算的两个问题解答

1. 如何使用df命令计算总磁盘空间?

df本身会列出每个挂载文件系统的磁盘空间详情,要计算总磁盘空间,我们需要提取目标文件系统的总容量后求和,这里分两种常见场景:

场景1:计算所有挂载文件系统的总空间(含虚拟文件系统)

如果不需要区分物理磁盘和tmpfs这类虚拟文件系统,直接用df的数值型输出(规避单位转换麻烦)来计算:

df -k | awk 'NR>1 {sum += $2} END {print "总磁盘空间:" sum/1024/1024 " GB"}'

简单拆解下:

  • df -k:以KB为单位输出磁盘数据,避免人类可读格式的单位(K/M/G)转换问题
  • awk 'NR>1 {sum += $2}':跳过第一行表头,把每行第二列(总容量,单位KB)累加
  • END {print ...}:最后把总和转换成GB输出,更符合日常阅读习惯

场景2:仅计算物理磁盘的总空间(排除虚拟文件系统)

如果只关心实际磁盘的空间,可过滤掉tmpfs、devtmpfs这类虚拟文件系统:

df -k -x tmpfs -x devtmpfs | awk 'NR>1 {sum += $2} END {print "物理磁盘总空间:" sum/1024/1024 " GB"}'
  • -x tmpfs -x devtmpfs:指定排除的文件系统类型,你可以根据需求添加其他类型,比如-x squashfs

2. 如何修改df -h命令,将结果的总容量求和并返回最终结果?

df -h输出的是带K/M/G单位的人类可读格式,直接求和需要先统一单位,这里提供一个可靠的awk脚本处理:

df -h | awk '
function convert_to_gb(size) {
    unit = substr(size, length(size))
    value = substr(size, 1, length(size)-1)
    if (unit == "G") return value
    if (unit == "M") return value/1024
    if (unit == "K") return value/1024/1024
    return 0
}
NR>1 {sum += convert_to_gb($2)}
END {printf "总容量:%.2f GB\n", sum}'

脚本逻辑说明:

  1. 定义convert_to_gb函数,把带单位的容量(如20G、512M)统一转换为GB数值
  2. 跳过表头行,将每行第二列的总容量转换为GB后累加
  3. 用printf格式化输出,保留两位小数,结果更清晰

如果要排除虚拟文件系统,给df -h加上-x参数即可,比如:

df -h -x tmpfs -x devtmpfs | awk '
function convert_to_gb(size) {
    unit = substr(size, length(size))
    value = substr(size, 1, length(size)-1)
    if (unit == "G") return value
    if (unit == "M") return value/1024
    if (unit == "K") return value/1024/1024
    return 0
}
NR>1 {sum += convert_to_gb($2)}
END {printf "物理磁盘总容量:%.2f GB\n", sum}'

内容的提问来源于stack exchange,提问作者tester787

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:32:16