一尘不染

使用df获得可用磁盘空间以仅显示kb中的可用空间吗?

linux

我正在尝试输出文件系统上的可用磁盘空间量/example

如果我运行该命令df -k /example,则可以通过以人为本并实际查看它来获得有关可用磁盘空间(以kb为单位)的良好信息。

我需要获取这些数据,并在我的shell脚本中的其他地方使用它。我最初考虑使用,cut但后来我的脚本无法移植到其他磁盘上,因为可用磁盘空间会发生变化,剪切将不会产生准确的结果。

如何仅获得示例的可用磁盘空间(以kb为单位)的输出?


阅读 403

收藏
2020-06-07

共1个答案

一尘不染

要获取df以kb为单位显示数据的输出,您只需要使用-k标志:

df -k

另外,如果您将文件系统指定为df,则将获取特定的值,而不是所有的值:

df -k /example

关于您的问题的主体:您想提取给定文件系统上的可用磁盘空间量。这将需要一些处理。

给定正常df -k输出:

$ df -k /tmp
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda1        7223800 4270396   2586456  63% /

例如,您可以Available使用awk或来获取(第4列)cut(以前用空格将其tr传递到squeeze- repeats-s)以空格):

$ df -k /tmp | tail -1 | awk '{print $4}'
2586456
$ df -k /tmp | tail -1 | tr -s ' ' | cut -d' ' -f4
2586456

与往常一样,如果要将结果存储在变量中,请使用如下var=$(command)语法:

$ myUsed=$(df -k /tmp | tail -1 | awk '{print $4}')
$ echo "$myUsed"
2586456

另外,从Tim Bunce的评论中,您可以使用--directget来处理长文件系统名称-,这样它就不会打印出破坏引擎的行:

$ df -k --direct /tmp
Filesystem     1K-blocks    Used Available Use% Mounted on
-                7223800 4270396   2586456  63% /
2020-06-07