从命令行有选择地从 .zip 存档中提取文件

从命令行有选择地从 .zip 存档中提取文件

假设我有一个很大的 zip 文件(>50GB),并且我想从命令行中提取一些文件。

要获取文件,我运行命令:

unzip -l myfile.zip | grep "foo"

这给了我一个 zip 条目列表;如何提取那些通过 grep 过滤器的文件?我尝试使用,xargs unzip -j但我想要一些更干净的解决方案,因为 zip 条目需要清理无用的信息。

答案1

斯特凡的想法是正确的传递zip与您要提取的文件名相对应的通配符。解析 的输出unzip意味着您必须留意随之而来的标题行和结尾行。

使用类似的东西:

unzip -j myfile.zip '*foo*'

小心从 shell 中引用通配符

如果继续沿着 grepping 输出的方向unzip,去掉标题和尾部并将其减少到文件名列:

unzip -l myfile.zip | sed '1,3d; /---------                     -------/d; $d'|cut -c31-

相关内容