以下工作符合预期。
find /opt/ -name "somefile.out" -exec grep 'Connection refused' {} \; | more
但是如果我只想在找到的文件的尾部搜索,我不能像这样添加尾部或尾部 -100......
find /opt/ -name "somefile.out" -exec grep 'Connection refused' tail {} \; | more
搜索最后几行文本的最佳方法是什么?
答案1
这似乎对我有用,但不确定这是否是最好的方法:
find . -name '*.log' -exec tail {} \; | grep GET | more
最重要的是按照更正确的顺序执行命令。
祝你好运!
答案2
您的问题可能已经在这里得到解答了:https://stackoverflow.com/questions/307015/how-do-i-include-a-pipe-in-my-linux-find-exec-command
不过,你可以使用 perl 来完成 tail 和 grep 的工作(注意:由于其令人惊讶的复杂性,这种说法有点开玩笑的味道,但它应该可以工作):
find /opt/ -name "somefile.out" -exec perl -ne 'push @a, $_; @a = @a[@a-NUMBEROFLINES..$#a]; END { foreach (@a) { print if /PATTERN/ } }' '{}' \;
如果您不想在看到某个“页脚”后扫描某个确定的行范围,那么 perl 可以帮您轻松实现这一点:
perl -ne 'print if /footer/ .. eof() and /PATTERN/'