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 支持带换行符的文件名。
我目前正在尝试获取目录中一小时内最后修改的文件,并将它们分类到一个静态日志文件中。问题是我不知道有多少文件要 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 支持带换行符的文件名。