以递归方式在zip文件列表中grep一个模式

Vij*_*jay 5 unix bash command-line grep

我在命令行上使用以下命令来获取模式匹配的行.

find . -name "*.gz"|xargs gzcat|grep -e "pattern1" -e "pattern2"
Run Code Online (Sandbox Code Playgroud)

我现在需要只找到模式所在的文件名.我怎么能在命令行上做到这一点?

grel -l因为我xargs gzcat之前使用过没有用处grep

小智 5

检查您是否有可用的 zgrep。然后,如果是的话:

find . -name '*.gz' -exec zgrep -l -e ".." -e ".." {} +
Run Code Online (Sandbox Code Playgroud)

如果你没有它 - 好吧,只需从有它的机器上复制它(我使用的所有 Linux 默认情况下都有它) - 这是一个简单的 bash 脚本。


Tim*_*bov 1

for i in $(find . -name "*.gz"); do gzcat $i|grep -qe "n1" -e "n2" && echo $i; done
Run Code Online (Sandbox Code Playgroud)