我有 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