繁体   English   中英

快速将grep gzip压缩文件反向传递到尾巴/头部的方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM