仅提取 sun tar.gz/zip

仅提取 sun tar.gz/zip

我有一个 zip/tar.gz,其中包含 zip 文件,而该文件又包含另一个 zip 文件。

例如:

1.zip contains 2.tar.gz and 3.zip.
3.zip contains 4.zip.

我只想从 1.zip 中提取 4.zip,我不想提取所有文件。

我怎样才能做到这一点?

答案1

这比看起来更难,因为unzip无法从其标准输入中提取,因此您无法将其与管道链接。但是,jar可以从其标准输入中提取 ZIP 存档funzip(有一些限制)。

如果3.zip 仅有的contains4.zip或 contains4.zip作为其第一个成员,然后funzip可以使用:

unzip -p 1.zip 3.zip | funzip > 4.zip

这用于从 中unzip提取3.zip的内容1.zip,将它们通过管道传输到标准输出,在标准输出中funzip提取4.zip的内容,并将它们写入4.zip

jar无论 的其他内容如何,​​都有效3.zip

unzip -p 1.zip 3.zip | jar x 4.zip

这会将3.zip内容输入jar并提取4.zip

funzip一起运送unzipjar是 Java 开发工具包的一部分,例如 openjdk-11-jdk-headless在 Debian 10 上。

相关内容