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

时间:2014-05-16 04:36:59

标签: grep cygwin

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

find -name "*.zip" | xargs -l zipgrep "QUICTest" -n > quic.test

它告诉我zip文件中文件的名称,我也得到了行号 - 但是我无法弄清楚的是,如何打印zipfile 我想我必须将它包装在一个单独的记录器中,但我仍然无法找到提取zip文件名和路径的方法

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

更新 - 我有一个部分答案 - 我已经编辑了zipgrep脚本,以便在egrep之后更改sed替换操作以戳取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

我刚刚意识到它会轰炸处理带有空格的子文件夹,所以我会继续努力。 有没有人以前解决过这个问题?我怀疑我仍然错过了一个更容易的选择

1 个答案:

答案 0 :(得分:1)

解决了......我有时候是一个笨蛋 看起来我需要使用cygwin

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

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