您能推荐一个好的实用程序/ BASH函数来扫描目录并输出其大小吗?
我需要在二进制目录/usr/bin
和/bin
中找到可执行文件的大小,以便找到它们的平均值和中位数。
我不确定使用du
命令还是ls
是最好的选择?
在Linux中查找目录中值和平均值的最简单有效的方法是什么?
PS:它应该是递归的,因为里面有几个目录。
答案 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 }'
现在开始阅读有关find
,awk
和Shell管道的信息。当您不得不处理linux shell东西时,这些事情将使您的生活变得更加轻松。此外,有关行缓冲和标准IO流的基本知识也很有帮助。