假设我有一个很大的 zip 文件(>50GB),并且我想从命令行中提取一些文件。
要获取文件,我运行命令:
unzip -l myfile.zip | grep "foo"
这给了我一个 zip 条目列表;如何提取那些通过 grep 过滤器的文件?我尝试使用,xargs unzip -j
但我想要一些更干净的解决方案,因为 zip 条目需要清理无用的信息。
答案1
斯特凡的想法是正确的传递zip
与您要提取的文件名相对应的通配符。解析 的输出unzip
意味着您必须留意随之而来的标题行和结尾行。
使用类似的东西:
unzip -j myfile.zip '*foo*'
如果继续沿着 grepping 输出的方向unzip
,去掉标题和尾部并将其减少到文件名列:
unzip -l myfile.zip | sed '1,3d; /--------- -------/d; $d'|cut -c31-