在zipfile中的文件名相同的grep -l

给定一组zip文件,是否有一个简单的方法来列出那些包含名称与给定模式匹配的文件的zip文件。 使用grep -l只列出其内容包含与给定模式匹配的行的文件?

我已经能够提出最好的是

 for i in $ZIPFILE_LIST > do j=$(basename $i) > unzip -l $i > /tmp/$j > grep -l $PATTERN /tmp/$j > rm /tmp/$j > done 

但它是相当hacky,没有例如通过sed传递grep输出(与各种逃避头痛)它会告诉你哪些文件你关心,但它并不实际上会给你一个forms的完整path,然后可以传递给别的东西。 这似乎是一个相当普遍的用例,应该有一些更好的开箱即用的工具或工具的组合来做到这一点。

 unzip -l files.zip | grep filename 

我想你想要zipgrep ,这是安装在股票Ubuntu(所以也许安装在您的系统上)。 这是一个在内部使用unzip和egrep的shell脚本。

Python zipfile模块能够帮助你解决你的问题吗?

例如:

 import zipfile def findfileinzip(source_filename, pattern): print(pattern) zf = zipfile.ZipFile(source_filename,'r') for member in zf.namelist(): if member.find(pattern) != -1: print(member)