Answers:
通常,如果不以一种或另一种方式解压缩文件,就不可能在压缩文件中搜索内容。由于zipgrep只是一个shell脚本,包装了unzip和egrep本身,因此您也可以手动进行:
for file in *.zip; do unzip -c "$file" | grep "ORA-1680"; done
如果只需要匹配的zip文件列表,则可以使用类似以下内容的文件:
for file in *.zip; do
if ( unzip -c "$file" | grep -q "ORA-1680"); then
echo "$file"
fi
done
这样,您只需要解压缩到标准输出(即到内存),而不是将文件解压缩到磁盘。当然,您可以尝试仅grep -a
压缩zip文件,但是根据文件的内容和您的模式,您可能会得到误报和/或误报。
unzip -c
将文件解压缩到stdout。它不会在其他任何地方写入整个未压缩的文件。
unzip
使用-p
的流管道!