Find

查找文件並在tail中搜尋

  • June 30, 2011

以下按預期工作。

find /opt/ -name "somefile.out" -exec grep 'Connection refused' {} \; | more

但是如果我只想在找到的文件的尾部搜尋,我不能像這樣添加 tail 或 tail -100 ……

find /opt/ -name "somefile.out" -exec grep 'Connection refused' tail {} \; | more

在最後幾行中搜尋文本的最佳方法是什麼?

這似乎對我有用,不確定這是否是最好的方法:

find . -name '*.log' -exec tail {} \; | grep GET | more

主要是以更正確的順序執行命令。

祝你好運!

您的問題可能已經在這裡得到解答: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/'

引用自:https://serverfault.com/questions/285608