有没有一种方法可以快速获取目录的准确大小(包括递归地包括其所有子目录)?我不希望子目录的大小,我只是想将它们递归地包含在报告的总大小中。
失败了,找到近似尺寸的方法吗?我在想一些类似的方法df可以对整个文件系统做出快速响应,但是这次是针对特定目录(及其子目录)。
du当给定目录包含数千个子目录时,使用的解决方案似乎需要花费很长时间。
有没有一种方法可以快速获取目录的准确大小(包括递归地包括其所有子目录)?我不希望子目录的大小,我只是想将它们递归地包含在报告的总大小中。
失败了,找到近似尺寸的方法吗?我在想一些类似的方法df可以对整个文件系统做出快速响应,但是这次是针对特定目录(及其子目录)。
du当给定目录包含数千个子目录时,使用的解决方案似乎需要花费很长时间。
Answers:
我觉得这很有用。
du -sm Directory
或获取内部目录的细分
du -sm Directory/*
然后排序,如果它有很多子目录
du -sm Directory/* | sort -n
我使用-m选项的原因是为了确保获得兆字节的输出。我发现这便于我进行直观比较(当我没有混合使用单位时,例如比较999 KB和1MB与999000MB和1000000MB),另外的好处是您可以将输出传递给排序对象。
将所有内容放到后台并重定向输出,无论使用哪种方法都将花费时间,这是遍历许多文件所需要的时间。
du -sm Directory/* | sort -nr > ~/cacheDu.log &
注意了逆向排序,因此大的是开头。每n分钟将其添加到cron运行。
然后使用别名ducache,您就拥有了相当最新的目录用法。
export alias ducache='head -n 15 ~/cacheDu.log'
shopt -s dotglob,否则du -sm Directory/*将不计算隐藏文件/目录。
du -sh "$dir"
将以“人类”格式的输出为您提供总大小的摘要。
由于您正在寻找的替代方案du,因此我尝试了find,但是完全相同:
$ find . -printf "%s\n" | {
sum=0
while read size; do ((sum+=size)); done
echo $sum
}
122865202884
$ du -sb .
122865202884 .
du花费了很长时间,因为它可以产生准确的结果。我希望能提供快速的n'脏近似答案的工具/命令。
df但是可以在整个文件系统上使用。
du是我所知道的唯一方法。问题在于数据分散在整个层次结构中,因此需要使用工具对数据进行计数以获取计数。