我的用户有时会收到带有时间戳的警报(来自另一个系统,通过电子邮件),但没有主机名。我想给他们一个可以比较我的系统中的时间戳的函数,其设计如下:
/home/admin/assets/sagLogs/
该目录包含 705 个以每个主机命名的目录。所以它们看起来像:
bes-t1sg0120, art-t1sg8479, mmo-t1sg0132, ..., ...
每个目录都包含在创建时命名的日志文件:
06-10-19-13-57-46 05-29-19-08-25-50 05-24-19-16-52-02 05-22-19-16-42-52 05-22-19-10-33-06
命名为月-日-年-时-分-秒。我希望能够搜索时间戳在输入时间 5 分钟内的所有日志,无论主机名如何。
我已经处理了格式:
#Times[0] = DAY
#Times[1] = MONTH
#Times[2] = YEAR
#Times[3] = HOUR
#Times[4] = MINUTE
IFS=':' read -r -a Times <<< $1
stamp="${Times[1]}-${Times[0]}-${Times[2]}-${Times[3]}-${Times[4]}"
因此输入的形式为Day:Month:Year:Hour:Minute
;所以如果 $1 是06:05:19:12:30
(2019 年 5 月 6 日中午 12:30),那么$stamp = 05-06-19-12-30
.
所以我想找到:
05-06-19-12-25
和之间的所有内容05-06-19-12-30
,它们位于这些~/assets/sagLogs/*
目录之一中。
如何高效抓取距离我的图章5分钟以内的文件?我尝试将每个文件名加载到一个数组中,同时 awk'ing 最后一部分,但这是完全错误的,而且速度很差。让我知道你的想法。如果您能向我展示如何获取绝对文件路径,那就加分了!