Find
查找文件並在tail中搜尋
以下按預期工作。
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/'