我有一个包含多个 .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
如果有许多具有不同结构的目录,请使用find
和du
:
$ find projects -type d -name bin -exec du -hsc {} +
如果您只需要总值,请通过管道传输命令以awk
打印最后一行的第一个字段:
... | awk 'END{ print $1 }'