gpt4 book ai didi

bash - 如何在 bash 中将文件大小加在一起,按日期将结果分组?

转载 作者:行者123 更新时间:2023-11-29 08:48:48 25 4
gpt4 key购买 nike

在我使用的 Linux 服务器上,一个进程以随机间隔写入随机命名的文件。这是一个小示例,显示了文件大小、修改日期和时间以及文件名:

27659   2009-03-09  17:24  APP14452.log
0 2009-03-09 17:24 vim14436.log
20 2009-03-09 17:24 jgU14406.log
15078 2009-03-10 08:06 ySh14450.log
20 2009-03-10 08:06 VhJ14404.log
9044 2009-03-10 15:14 EqQ14296.log
8877 2009-03-10 19:38 Ugp14294.log
8898 2009-03-11 18:21 yzJ14292.log
55629 2009-03-11 18:30 ZjX14448.log
20 2009-03-11 18:31 GwI14402.log
25955 2009-03-12 19:19 lRx14290.log
14989 2009-03-12 19:25 oFw14446.log
20 2009-03-12 19:28 clg14400.log

(请注意,有时文件大小可以为零。)

我想要的是一个 bash 脚本来总结文件的大小,按日期分割,产生类似这样的输出(假设我的算法是正确的):

27679 2009-03-09
33019 2009-03-10
64527 2009-03-11
40964 2009-03-12

结果会显示一段时间内的事件趋势,并突出显示特别忙碌的日子。

在 SQL 中,操作很简单:

SELECT SUM(filesize), filedate
FROM files
GROUP BY filedate;

现在,这在 Perl 或 Python 中可能非常简单,但我真的更喜欢 bash shell 或 awk 解决方案。在 bash 中按日期对文件进行分组对我来说似乎特别棘手(特别是如果您不能采用特定的日期格式)。我想可以在一个循环中对大小求和,但有没有更简单、更优雅的方法?

最佳答案

我经常使用 Awk 的这个习语:

awk '{sum[$2]+= $1;}END{for (date in sum){print sum[date], date;}}'

关于bash - 如何在 bash 中将文件大小加在一起,按日期将结果分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/643584/

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