使用find和zipgrep在子文件夹的zipfiles中查找字符串

使用find和zipgrep在子文件夹的zipfiles中查找字符串,grep,cygwin,Grep,Cygwin,经过多次尝试和错误,我终于得到了一个cygwin命令,它将在压缩日志文件中打印包含给定字符串的所有行 find -name "*.zip" | xargs -l zipgrep "QUICTest" -n > quic.test 它告诉我zip文件中的文件名,我也得到了行号——但我不知道如何打印zipfile 我想我必须将它包装在一个单独的记录器中,但我仍然看不到提取zip文件名和路径的方法 我很高兴我得到了正确的结果,但并不是因为我不能确定我们在哪里找到这些文件——因为它们都是通用日志

经过多次尝试和错误,我终于得到了一个cygwin命令,它将在压缩日志文件中打印包含给定字符串的所有行

find -name "*.zip" | xargs -l zipgrep "QUICTest" -n > quic.test
它告诉我zip文件中的文件名,我也得到了行号——但我不知道如何打印zipfile 我想我必须将它包装在一个单独的记录器中,但我仍然看不到提取zip文件名和路径的方法

我很高兴我得到了正确的结果,但并不是因为我不能确定我们在哪里找到这些文件——因为它们都是通用日志文件,它们的标题上会有日期和时间,但没有其他有用的信息。 非常感谢

更新-我有一个部分答案-我已经编辑了zipgrep脚本,在egrep之后将sed replace操作更改为插入zipfile名称

 status_grep=` ( \
 ( unzip -p-L "$zipfile" "$i" | \
 egrep $opt "$pat" 1>&4 ; echo $? >&3 ) 4>&1 | \
 sed "s|^|${zipfile}::${i}:|" 1>&4 \
 ) 3>&1 `
fi
我刚刚意识到,它轰炸了处理子文件夹中的空格,所以我将继续这方面的工作。
以前有人解决过这个问题吗?我怀疑我仍然缺少一个更容易解决的选项。。。我有时是个笨蛋 看起来我需要用cygwin

find -name "*.zip" -print0 | xargs -0 -l zipgrep "QUICTest" -n | tee quic.test

我没有意识到我需要将-print0用于find,以及-0和-l用于xargs,因为您需要这两组指令。

您是否尝试将
-H
选项添加到
zipgrep
?您好,它只是告诉我这是标准的输入,但我只是在看脚本,觉得我可能已经解决了它。可能需要一些摆弄;)