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 脚本。
for i in $(find . -name "*.gz"); do gzcat $i|grep -qe "n1" -e "n2" && echo $i; done
Run Code Online (Sandbox Code Playgroud)