从不存在的目录路径获取FreeSpace

时间:2012-02-16 09:54:18

标签: bash shell

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

dir_path=/some/dir
existing_path=$dir_path
while test ! -e $existing_path; do
  existing_path=$(dirname $existing_path)
done

然后您可以在df$existing_path。所有这一切都在一个bash函数中:

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

  df -k $existing_path
}

答案 1 :(得分:0)

test -d $dir_path && ( df -k $dir_path | awk 'NR == 2 {print $4}' )