Shell 脚本:想要查找过去一小时内的所有文件并将最后 1000 行分类到 1 个日志文件

Shell script: Want to find all files in last hour and cat the last 1000 lines to 1 log file

我目前正在尝试获取目录中一小时内最后修改的文件,并将它们分类到一个静态日志文件中。问题是我不知道有多少文件要 cat...可能是 5,可能是 15。所以我想它会像这样,但我只想要最后 1000 个警告我找到的每个文件的行...我尝试了一个带有通配符的标准尾巴,但出现了一个错误,说非法函数或其他东西。

find /xxy/ -mmin -60 | cat /xxy/*.log > /xxy/static.log

它可以工作...但是如果文件是一个月前的,我就会得到所有的东西。我想将它缩短到每个找到的日志文件只有 1000 个条目,但 google 在这一点上没有帮助我,我有点初学者。

任何提示或指示都会很棒。但我可能不得不以不同的方式处理它。

谢谢。

这些 "last hour" 命令中唯一对我有用的命令是:

find . -mtime -.04

将其发送到文件当然可以像以下一样简单:

find . -mtime -.04 > static.log

感谢反馈,最终使用了这个:

FILENUM=$(查找/xxy/ -mmin -60 | wc -l)

找到 /xxy/ -type f -name "*"|尾-n$FILENUM | xargs 尾巴-n1000

我最初将此解决方案作为评论发布,我认为我缺少一些要求。
此解决方案(名称类似于 *.log 的 nlu findinf 文件)应该有效

find /xxy/ -type f -name "*.log" -mmin -60 -exec tail -1000 "{}" \;

OP 告诉(对原始问题的评论)这不起作用。 他的错误 -exec command not found 表明他在 -exec 之前有竖线或分号。当他的find坏了的时候,他可以试试

find /xxy/ -type f -name "*.log" -mmin -60 -print0 | xargs --null -n1 tail -1000

我添加了 -print0 和 --null 支持带换行符的文件名。