Bash 从不存在的目录路径获取可用的空闲空间

Bash 从不存在的目录路径获取可用的空闲空间,bash,shell,Bash,Shell,我想从给定的路径获得可用的自由空间。目前,我的方法是使用 df-kb$PATH | awk'NR==2{print$4}' 上述方法的问题是,它不适用于不存在的路径。 因此,它可以通过mkdir-p$PATH来解决 但是,它会再次创建空白目录,只是为了检查可用的可用空间(前提是这些路径在系统中不存在) 在运行我的df之后,我可以运行rmdir$PATH,但还记得吗?我在前面使用了mkdir-p,操作系统可能已经创建了几个级别的目录,执行rmdir$PATH只能删除最后一个级别 那么,是否有任何简

我想从给定的路径获得可用的自由空间。目前,我的方法是使用

df-kb$PATH | awk'NR==2{print$4}'

上述方法的问题是,它不适用于不存在的路径。 因此,它可以通过
mkdir-p$PATH
来解决

但是,它会再次创建空白目录,只是为了检查可用的可用空间(前提是这些路径在系统中不存在)

在运行我的
df
之后,我可以运行
rmdir$PATH
,但还记得吗?我在前面使用了
mkdir-p
,操作系统可能已经创建了几个级别的目录,执行
rmdir$PATH
只能删除最后一个级别


那么,是否有任何简单的解决方案,仅用于检查给定路径(尤其是不存在的路径)的可用空间?或者是否有任何实用程序可以从给定的目录路径输出挂载点(这样我就可以从df中grep挂载路径以获得可用的可用空间)?

如果您想知道您计划创建但还不存在的控制器的可用空间,首先您需要找到存在的最近的父目录:

dir_path=/some/dir
existing_path=$dir_path
while test ! -e $existing_path; do
  existing_path=$(dirname $existing_path)
done
然后您可以在
$existing\u path
上执行
df
。所有这些都集中在一个bash函数中:

function my_df() {
  existing_path=$1
  while test ! -e $existing_path; do
    existing_path=$(dirname $existing_path)
  done

  df -k $existing_path
}

df-k对于一个不存在的$dir_路径是不起作用的
df:($/appl/asdasd)不是块设备、目录或装载的资源
是的,我知道它不会工作,这就是为什么我在(
test-d$dir_path
)之前放置了一个测试,并且只有在测试成功时(
和&
bash操作符)才会执行
df
。检查现有目录的磁盘空间是小菜一碟。我的目标实际上是检查不存在的$dir_路径的磁盘空间。好的,我误解了这个问题。新答案来了。太棒了!就像“递归”的dirname方法一样。谢谢!不完全是递归的,更多的是迭代的。递归版本是:
函数my_df(){test-e$1 | | my_df$(dirname$1);test-e$1&&df-k$1;}
function my_df() {
  existing_path=$1
  while test ! -e $existing_path; do
    existing_path=$(dirname $existing_path)
  done

  df -k $existing_path
}