在linux中递归查找二进制目录的大小
您能推荐一个好的实用程序/BASH函数来扫描目录并输出其大小吗 我需要在二进制目录中找到可执行文件的大小:在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
/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 ]管道的输出是有效的。这比简单的管道要复杂一点,但可能需要几条管线。