【问题标题】:Can multiple .gz files be combined such that they extract into a single file? [duplicate]是否可以组合多个 .gz 文件以将它们提取到单个文件中? [复制]
【发布时间】:2013-05-23 13:40:14
【问题描述】:

假设我有 3 个文件:1.txt2.txt3.txt,它们都已被压缩。我知道 gzip 允许使用 cat 组合多个文件:

cat 1.gz 2.gz 3.gz > 123.gz

但是,当提取 123.gz 时,它会生成原始的 3 个文件。

是否可以将三个档案合并为一个档案中的单个文件也将合并为一个文件?

【问题讨论】:

  • 传统的 Unix 方式是 tar。 AFAIK xz 可以做你想做的事,但那些不是拉链。
  • 123.gz什么时候提取的? gunzip 将其解压缩到一个名为 123 的文件中。

标签: linux unix gzip


【解决方案1】:

令人惊讶的是,这实际上是可能的。

GNU zip man page states:可以拼接多个压缩文件。在这种情况下,gunzip 将一次提取所有成员。

示例:

您可以像这样构建 zip:

echo 1 > 1.txt ; echo 2 > 2.txt; echo 3 > 3.txt;
gzip 1.txt; gzip 2.txt; gzip 3.txt;
cat 1.txt.gz 2.txt.gz 3.txt.gz > all.gz

然后提取它:

gunzip -c all.gz > all.txt

all.txt 的内容现在应该是:

1
2
3

等同于:

cat 1.txt 2.txt 3.txt

而且 - 按照您的要求 - “gunzip 将立即提取所有成员”。

【讨论】:

    【解决方案2】:

    为了连接多个文件,尝试:

    gzip -c 1.txt > 123.gz
    gzip -c 2.txt >> 123.gz
    gzip -c 3.txt >> 123.gz
    

    随后,gzip -dc 123.gz 将等同于 cat 1.txt 2.txt 3.txt

    【讨论】:

    • 谢谢,这在我的情况下不太适用,因为每个存档都是由 Hadoop 作业中的不同减速器编写的。
    猜你喜欢
    • 2022-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-16
    • 2021-09-11
    • 2016-10-06
    相关资源
    最近更新 更多