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
}