日志文件问题

日志文件问题

我有一个程序可以将日志文件放入/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

相关内容