可以合并多个.gz文件,以便将它们提取到一个文件中吗?

时间:2013-05-23 13:40:15

标签: linux unix gzip

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

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

然而,当提取123.gz时,它将生成原始的3个文件。

是否可以将存档中的各个文件组合成一个文件的方式合并三个存档?

2 个答案:

答案 0 :(得分:21)

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

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

示例:

您可以像这样建立拉链:

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将立即提取所有成员。”

答案 1 :(得分:4)

要连接多个文件,请尝试:

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