使用 df 命令仅显示 %used

Joh*_*ohn 2 python linux bash shell grep

我发现了一些其他解决方案,例如: df -Ph /oracle/archive | awk 'NR == 2{print $5}' | tr -d '%'

但它们似乎有点太多了,我认为存在更优雅的东西,因为我将直接传递到subprocess.check_output()in python2.7

下面是一个输出示例df

Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/root        7508524 4890644   2258240  69% /
Run Code Online (Sandbox Code Playgroud)

我只想获得69价值。

谁能帮我吗?

非常感谢

Joh*_*024 9

使用 python 更短

statvfs将提供分区上空闲或可用块的信息,而无需调用子进程:

>>> import os
>>> st = os.statvfs('/')
>>> (st.f_blocks - st.f_bavail) / st.f_blocks
0.692345901307951
Run Code Online (Sandbox Code Playgroud)

使用 df 和 awk 更短

$ df -Ph /oracle/archive | awk 'NR == 2{print $5+0}'
69
Run Code Online (Sandbox Code Playgroud)

awk 会将其视为$5字符串。通过向其添加零,我们强制 awk 将其转换为数字,从而消除了%.

使用 df 和 GNU grep 更短

df -Ph /oracle/archive | grep -Po '\d+(?=%)'
69
Run Code Online (Sandbox Code Playgroud)

-o告诉 grep 仅打印匹配的字符串。 \d+(?=%)查找后面跟随%但不包含%在匹配中的数字。

这需要-Pgrep 选项,而 grep 则需要 GNU grep。


Tai*_*aul 5

尝试

echo $(df --output=pcent /oracle/archive) | tr -d 'Use% '
Run Code Online (Sandbox Code Playgroud)

--output=pcent 选项仅选择已使用的百分比字段。但是它也打印标题。

echo 命令将输出展平为单个字符串。

tr 命令删除不需要的字符,如标题、前导空格和百分号。