如何将档案的解压缩输出发送到标准输出?

如何将档案的解压缩输出发送到标准输出?

当您使用 gunzip 解压 gzip 存档而不使用任何参数时,存档会消失,而解压后的文件会保留在原处。但是,如果您使用 -c 选项,存档会保留,并且其解压后的输出只会发送到标准输出。

我的问题是,我可以用其他归档或压缩实用程序(zip、7-zip、rar 等)做同样的事情吗?也就是说,当你解压其内容时,初始存档可能不会消失,但我想知道如何将输出发送到标准输出而不是目录

答案1

您提到的格式不仅是压缩格式,也是存档格式 - 它们包含多个文件,问题是“stdout”是一个简单的字节流,没有内置的方式来分隔多个文件。

因此,您能得到的最好的东西是输出一个选项单个文件通过标准输出,例如:

bsdtar xfO MyArchive.zip path/to/important_file.txt > file.txt

我在这个例子中使用了 bsdtar(libarchive 的一部分),因为它可以理解许多存档格式,包括 zip 和 7-zip。

(当然,您可以发明一种通过 stdio 传输多个文件的结构化格式,但是......这与现有的“tar”或“cpio”存档格式没有什么不同,它们正是这样做的。您最终会制作一个“zip-to-tar”转换器。)

相关内容