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

sla*_*ton 16 unix linux gzip

让我们说我有3个文件:1.txt,2.txt并且3.txt都被gzip压缩.我知道gzip允许使用cat组合多个文件:

cat 1.gz 2.gz 3.gz > 123.gz
Run Code Online (Sandbox Code Playgroud)

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

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

djf*_*djf 21

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

GNU zip的手册页指出:多个压缩文件可以级联.在这种情况下,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
Run Code Online (Sandbox Code Playgroud)

然后提取它:

gunzip -c all.gz > all.txt
Run Code Online (Sandbox Code Playgroud)

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

1
2
3
Run Code Online (Sandbox Code Playgroud)

这与以下相同:

cat 1.txt 2.txt 3.txt
Run Code Online (Sandbox Code Playgroud)

并且 - 正如您所要求的那样 - "gunzip将立即提取所有成员".