我有一个程序可以将日志文件放入/var/log/myfiles/
目录中。这些文件的大小保持较小,并且文件名按 number 递增。在一天结束时,我想将最后一个文件添加到报告中。我对做这件事一片空白。我可以找到该文件,但它在脚本中不起作用。
/var/log/myfile/master
/var/log/myfile/master.1
/var/log/myfile/master.2
/var/log/myfile/master.3
答案1
假设您想要的文件(“最后一个文件”)是具有最高数字扩展名的文件,您可以使用zsh 强大的通配能力:
zsh -c 'cat /var/log/master.*(oe['REPLY=${REPLY##*.}']n[-1]) > report'
通配符/全局扩展是:
/var/log/master.*
-- 匹配以以下开头的文件/var/log/master.
( ... )
-- 定义“全局限定符”o
-- 对结果进行排序e['REPLY=${REPLY##*.}']
-- 要排序的结果是通过剥离第一个句点的前导文本来给出的,例如,将/var/log/myfile/master.3
其变成3
n
-- 按数字而不是字母顺序对结果进行排序[-1]
-- 对结果进行排序后,只取出最后一个元素(最大的元素)
答案2
问题解决了。我更改了文件名以包含日期和时间戳。更容易识别和提取所需的数据。
Master-20-Jan-2019-18:20.log
Master-20-Jan-2019-18:45.log
Master-20-Jan-2019-19:18.log