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

War*_*ior 2 linux grep zip compression

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

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

unzip -l myfile.zip | grep "foo"
Run Code Online (Sandbox Code Playgroud)

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

Jef*_*ler 6

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

\n\n

使用类似的东西:

\n\n
unzip -j myfile.zip \'*foo*\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

小心地引用 shell 中的通配符

\n\n

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

\n\n
unzip -l myfile.zip | sed \'1,3d; /---------                     -------/d; $d\'|cut -c31-\n
Run Code Online (Sandbox Code Playgroud)\n