[英]Fast way to grep gzipped files in reverse piped to tail/head
我需要搜索gzip压缩文件的文件夹中的字符串,但是我需要从每个文件的底部开始搜索。 然后,当它有10个匹配项时,我需要该命令返回结果。
到目前为止,我有这个:
find '/tmp/myfiles/' -type f \( -iname '*.txt' -o -iname '*.gz' \) -exec zcat -f {} \+ 2>&1 | tac | zgrep -ish 'foobar' | tail -n +1 | head -n 10
我正在使用zcat
来获取所有文件内容,然后使用tac
来反转它们。 这比这要慢得多:
find '/tmp/myfiles/' -type f \( -iname '*.txt' -o -iname '*.gz' \) -exec zgrep -ish 'foobar' {} \+ 2>&1 | tail -n +1 | head -n 10
但是,这仅从文件的顶部读取,我想一种反向搜索的方法,而不必先读取完整的文件...
无法避免读取文件的开头。 但是,仅反转整个文件以获取最后的匹配显然比仅反转匹配要慢得多(当然,除非每一行都包含一个匹配项)。 也许试试这个;
find '/tmp/myfiles/' -type f \( -iname '*.txt' -o -iname '*.gz' \) -exec zgrep -ish 'foobar' {} \+ 2>&1 | tac | head -n 10
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.