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

在linux中递归查找二进制目录的大小,linux,bash,ls,du,Linux,Bash,Ls,Du,您能推荐一个好的实用程序/BASH函数来扫描目录并输出其大小吗 我需要在二进制目录中找到可执行文件的大小:/usr/bin和/bin,以便找到它们的平均值和中间值 我不确定是最好使用du命令还是ls 在Linux中,查找目录的中值和平均值最简单有效的方法是什么 PS:它应该是递归的,因为里面有几个目录。这是一个两步过程。首先查找每个文件的磁盘使用情况,然后计算值 首先,du显然是我的最爱 find /usr/bin -type f -exec du '{}' '+' 这将搜索任何文件(-typ

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

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

我不确定是最好使用
du
命令还是
ls

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


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

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

首先,du显然是我的最爱

find /usr/bin -type f -exec du '{}' '+'
这将搜索任何文件(
-type f
),并将(
'+'
)其文件名(
'{}'
)附加到
du
的调用(
-exec
)中

结果将是一个使用情况(在块IIRC中)和文件名的选项卡分隔列表

现在是第二部分(这里是平均数)。我们将把这个列表输入到
awk
中,让它求和并除以行数

{ sum = $1 } END { print "avg: " sum/NR }
第一个块将在每行执行,并将第一个(制表符分隔)列的值添加到变量
sum
。另一个块的前缀是
END
,这意味着它将在stdin为EOF时执行
NR
是一个特殊变量,表示行数

因此,完成的命令如下所示:

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

现在,阅读有关
find
awk
和shell管道的内容。当你不得不处理linux外壳的事情时,这些事情会让你的生活变得相当轻松。此外,有关行缓冲和标准IO流的基本知识也很有帮助。

请查看
du
。命令
mandu
将为您提供更多信息。您还应该查看
awk
来解析
du
的输出,并计算中间值和平均值。这里有太多的例子可以进行这种计算。使用Windows CMD.exe不太可能有帮助。谢谢你的详细回答。如何检查中位数?平均值比较容易,因为它是用文件数除以大小,但是如何才能找到中间值呢?在中间搜索文件并检查它的长度(如果是奇数)或试图找到3个“中间”元素,并计算平均[中间-1 ]和[中间+1 ]管道的输出是有效的。这比简单的管道要复杂一点,但可能需要几条管线。