【发布时间】:2015-10-18 14:25:33
【问题描述】:
我在 tomcat 日志中有日志文件,我想编写一个脚本来合并最近 7 天的日志文件。我是 shell 脚本的新手。
请在这方面帮助我。
我的日志文件看起来像 catalina.2015-04-23.log catalina.2015-06-05.log catalina.2015-06-04.log
【问题讨论】:
我在 tomcat 日志中有日志文件,我想编写一个脚本来合并最近 7 天的日志文件。我是 shell 脚本的新手。
请在这方面帮助我。
我的日志文件看起来像 catalina.2015-04-23.log catalina.2015-06-05.log catalina.2015-06-04.log
【问题讨论】:
这将生成 1 周的合并日志文件
for a in `seq 6 -1 0`;
do
dt=`date "+%F" --date=" -"$a" days"`;
f=$dt".log";
cat $f >> "1_week.log";
done;
【讨论】:
为了避免使用明确的日期,我假设文件最后一次修改是在他们记录的日期,允许使用find 和一个单行:
find . -name '*catalina*' -daystart -mtime -6 -mtime +0 -exec cat '{}' >> this_weeks_logs.log \;
解释:
查找本地文件夹 . 中的所有文件,-name 片段 catalina。
获取最多 6*24 小时前 -mtime -6 和最少 0 小时前 -mtime +0(使其间隔 7 天)交替的文件,但是从今天开始计算小时数 -daystart(即今天 00:00:00) - 确保我们从昨天到一周前开始。然后将catenate 文件放入this_weeks_logs.log
更多关于-mtime选项的时间范围可以在here找到
【讨论】: