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

如何去除df命令输出及排序结果中的Filesystem表头?

嘿,我来帮你捋清楚这个问题~

首先你原来的命令有两个小问题:一是没跳过表头行,所以Filesystem会被一起传给sort;二是你用awk只输出了第一列(卷名),但sort -k3是要按输入行的第三列排序——可这时候输入给sort的只有一列,这个排序参数根本没生效,等于白加了😅

下面给你两种场景的正确命令,按需选就行:

场景1:要显示卷的完整信息,按已用数据量倒序,且去掉表头

先通过tail -n +2过滤掉第一行的表头,再用sort按第三列(已用数据量)数值倒序排序:

df | tail -n +2 | sort -r -k3 -n

这里tail -n +2的意思是从第2行开始输出,直接砍掉表头;sort的-r是倒序、-k3指定按第3列排序、-n确保按数值大小排序(避免把数字当字符串排错)。

场景2:只需要显示卷名(Filesystem列),但按已用数据量倒序排列

这时候得先把已用数据量和卷名绑定输出,排序后再提取卷名:

df | awk 'NR>1 {print $3, $1}' | sort -r -n | awk '{print $2}'

拆解一下:

  1. 第一个awk:NR>1跳过表头行,输出已用数据量($3)和卷名($1);
  2. sort -r -n:按已用数据量的数值倒序排序;
  3. 第二个awk:提取排序后的卷名列。

要是你想用awk一次性搞定,也可以这么写(不过如果有多个卷已用数据量相同,可能会丢失条目,不如上面的方法稳妥):

df | awk 'NR>1 {arr[$3]=$1} END {for (size in arr) print arr[size] | "sort -r -n"}'

总结一下,你原来的命令要去掉表头,只需要给awk加个NR>1的判断(比如df | awk 'NR>1 {print $1 | "sort -r -k3 -n"}'),但这样排序还是无效的——因为你只输出了第一列,sort找不到第三列来排序,所以一定要先保留用于排序的列,或者用我上面给的完整命令哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 12:22:44