在Linux中递归查找二进制目录的大小

时间:2019-05-03 06:20:30

标签: linux bash ls du

您能推荐一个好的实用程序/ BASH函数来扫描目录并输出其大小吗?

我需要在二进制目录/usr/bin/bin中找到可执行文件的大小,以便找到它们的平均值和中位数。

我不确定使用du命令还是ls是最好的选择?

在Linux中查找目录中值和平均值的最简单有效的方法是什么?

PS:它应该是递归的,因为里面有几个目录。

1 个答案:

答案 0 :(得分:1)

这是一个两步过程。首先找到每个文件的磁盘使用情况,然后计算值。

对于第一个du显然是我的最爱。

find /usr/bin -type f -exec du '{}' '+'

这将搜索所有文件(-type f,并将其文件名('+')附加('{}')到-exec的调用(du)中

结果将是制表符分隔的使用情况列表(在IIRC块中)和文件名。

现在是第二部分(这里是平均值)。我们将把这个列表输入awk中,然后对其进行汇总并除以行数

{ sum = $1 } END { print "avg: " sum/NR }

第一行将在每一行执行,并将第一行(用制表符分隔)的值添加到变量sum中。另一个块的前缀为END,这意味着它将在标准输入为EOF时执行。 NR是一个特殊的变量,表示行数。

所以完成的命令如下:

find /usr/bin -type f -exec du '{}' '+' | awk '{ sum += $1 } END { print "Avg: " sum/NR }'

现在开始阅读有关findawk和Shell管道的信息。当您不得不处理linux shell东西时,这些事情将使您的生活变得更加轻松。此外,有关行缓冲和标准IO流的基本知识也很有帮助。