我想要一种方法来捕获特定分区的磁盘使用情况,方法是使用该分区所安装的目录。输出应该只是一个整数,没有填充或后续符号,因为我想将其保存在一个变量中。
我已经使用了df --output=pcent /mount/point
,但需要修剪输出,因为它有一个不必要的标题、值之前的单个空格填充以及值后面的 % 符号,如下所示:
Use%
83%
在这种情况下,我想要的输出将是83
。我不知道使用 的输出有什么缺点df
,但很乐意接受不依赖于它的其他方法。
答案1
我会用...
df --output=pcent /mount/point | tr -dc '0-9'
不确定 sed 是否更快,但我永远记不住 sed 的值。
答案2
这是 awk 解决方案:
$ df --output=pcent /mnt/HDD | awk -F'%' 'NR==2{print $1}'
37
基本上这里发生的情况是我们将 '%' 字符视为字段分隔符(列分隔符),并且仅当记录数等于二(部分NR==2
)时才打印第一列 $1
如果我们想使用bash
-only 工具,我们可以这样做:
bash-4.3$ df --output=pcent / | while IFS= read -r line; do
> ((c++));
> [ $c -eq 2 ] && echo "${line%\%*}" ;
> done
74
为了好玩,可以sed
通过捕获组和-r
扩展正则表达式进行替代:
df --output=pcent | sed -nr '/[[:digit:]]/{s/[[:space:]]+([[:digit:]]+)%/\1/;p}'
答案3
sed
解决方案
df --output=pcent /mount/point | sed '1d;s/^ //;s/%//'
1d
删除第一行;
分隔命令s/^ //
删除行首的空格s/%//
移除%
标志
答案4
我遇到一个尚未实现 --output=pcent 的服务器,因此我使用了正常输出,按列过滤,然后使用正则表达式:df /mount/point | awk '{print $5}' | tr -dc '0-9'