总目录大小

总目录大小

我有一个包含多个 .NET 项目的文件夹,我们称之为父目录projects。每个 .NET 项目都有一个bin文件夹,其中包含为该项目构建的二进制文件。现在我想获取所有这些文件夹中文件大小的总和。

到目前为止,我可以获得每个bin目录的列表

du -h | grep 'bin$'

这给出了每个目录的大小bin以及该目录的路径。

我该如何总结这些?我可以只使用它吗?du还是需要通过管道传输到其他工具?

答案1

我建议不要使用,-h因为单位会根据目录的大小而变化。使用-b给出以字节为单位的大小,然后您可以将其转换为您需要的任何内容。这是Linux,你有多种选择。

du -b | awk '/bin$/{print $1'} | paste -sd+ - | bc

du -b | awk '/bin$/{Total=Total+$1} END {print "Total "Total" bytes"}'

答案2

您可以使用 ( -s) 获取每个目录的汇总值(不打印子目录),使用 ( -c) 获取总计。如果项目不是太多,请将每个目录作为参数传递,例如:

$ du -hsc projects/projectone/bin projects/projecttwo/bin
30M projects/projectone/bin
2.0M    projects/projecttwo/bin
32M total

如果有许多具有不同结构的目录,请使用finddu

$ find projects -type d -name bin -exec du -hsc {} +

如果您只需要总值,请通过管道传输命令以awk打印最后一行的第一个字段:

... | awk 'END{ print $1 }'

相关内容