gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 04:51:52 24 4
gpt4 key购买 nike

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

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

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

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

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

最佳答案

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

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

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

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

结果将是制表符分隔的用法列表(在 block IIRC 中)和文件名。

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

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

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

所以完成的命令如下所示:

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

现在去阅读有关 findawk 和 shell 管道的内容。当您必须处理 linux shell 的东西时,这些东西将使您的生活变得更加轻松。有关行缓冲和标准 IO 流的基本知识也很有帮助。

关于linux - 递归查找Linux中二进制目录的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55964255/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com