合并两个或多个压缩文件

合并两个或多个压缩文件

我有 2 个 gz 文件需要合并为一个 - 也就是说我想将两个 .gz 文件合并为一个,这样当我提取合并后的文件时,我会得到一个包含原始输入文件连接的文件。

time join <(zcat r_TR2_2012-05-28-08-10-00.gz) <(zcat r_TR1_2012-05-28-08-10-00.gz)

上述语句未按预期工作。我正在使用 3 个命令来执行必要的操作。

gunzip r_TR2_2012-05-28-08-10-00.gz 
gunzip r_TR1_2012-05-28-08-10-00.gz 
tar -zcvf combined.tar.gz r_TR1_2012-05-28-08-10-00 r_TR2_2012-05-28-08-10-00 

然后当我提取文件时将它们连接在一起以产生我想要的输出。

有没有办法用 1 条语句来完成此操作?

答案1

令人惊讶的是,Quanta 在评论中发布的内容有效 — — 至少在我的 Mac 上有效!

$ echo abc > foo
$ echo cba > bar
$ gzip foo
$ gzip bar
$ cat foo.gz bar.gz > baz.gz
$ gunzip baz.gz 
$ cat baz 
abc
cba
$

我感到有些不安,但也印象深刻。

答案2

我猜你的意思是:

zcat r_TR2_2012-05-28-08-10-00.gz r_TR1_2012-05-28-08-10-00.gz| gzip -9 > joined.gz

答案3

如果您有多个压缩文件.gz,需要将它们合并为一个文件,您可以tar直接使用。无需解压然后再次压缩。

您可以尝试以下操作:

tar cvf combined.gz.tar r_TR1_2012-05-28-08-10-00.gz r_TR2_2012-05-28-08-10-00.gz

但是,您将获得一个扩展名.gz.tar与已知扩展名不同的文件.tar.gz。要解压缩该文件,您可以尝试:

tar -xavf combined.gz.tar

选项 -a 在这里很有用(来自man tar):

-a, --auto-compress
       use archive suffix to determine the compression program

相关内容