在 Bash 中获取当前目录中的可用空间

Che*_*eng 36 bash

我知道df -hand pwd,但对于正则表达式匹配部分来说似乎有点复杂。有任何想法吗?

Ste*_*n D 53

通过使用该-P选项可以使输出更容易解析,这将确保:

  1. 每个文件系统的信息总是打印在一行上;挂载设备永远不会单独放在一条线上。这意味着如果挂载设备名称的长度超过 20 个字符(例如,对于某些网络挂载),则列未对齐。

这使得获得可用空间变得更加容易:

$ df -Ph . | tail -1 | awk '{print $4}'
Run Code Online (Sandbox Code Playgroud)

-h使用兆字节、千兆字节等。如果您的系统没有它,请-k仅使用千字节。)

如果我们传递df一个路径,它只会返回 2 行:一个标题行,然后是有关包含该路径的文件系统的数据。我们可以使用 tail 来抓取第二行。我们知道可用空间位于第 4 列,因此我们使用awk. 这一切都可以通过awk

$ df -Ph . | awk 'NR==2 {print $4}'
Run Code Online (Sandbox Code Playgroud)

或许多其他过滤器组

  • 您可以通过使用 --output=avail 开关来做到这一点: ``df -h --output=avail 。| 尾-1`` (2认同)

Chr*_*ian 16

怎么办df -h .。这将为您提供当前工作目录所在分区的可用空间。

一个小例子:

 /usr/local/nagios/libexec # df -h .
 Filesystem            Size  Used Avail Use% Mounted on
 /dev/mapper/vg00-lvol1
                       9.9G  6.1G  3.4G  65% /
Run Code Online (Sandbox Code Playgroud)


xer*_*mus 6

以字节为单位:

df --output=avail -B 1 "$PWD" | tail -n 1
Run Code Online (Sandbox Code Playgroud)

人类可读:

df --output=avail -h "$PWD" | tail -n 1
Run Code Online (Sandbox Code Playgroud)

或者

df --output=avail -B 1 "$PWD" |tail -n 1 | numfmt --to="iec"
Run Code Online (Sandbox Code Playgroud)

或者

df --output=avail -B 1 "$PWD" |tail -n 1 | numfmt --grouping
Run Code Online (Sandbox Code Playgroud)