我有2个gz文件,我需要合并成一个 – 也就是说,我想将两个.gz文件合并为一个,这样当我提取组合文件时,我会得到一个包含原始input文件串联的文件。
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声明中做到这一点?
令人惊讶的是广达在评论中发表的作品 – 至less在我的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 $
我有些不安,但也印象深刻。
我想你的意思是:
zcat r_TR2_2012-05-28-08-10-00.gz r_TR1_2012-05-28-08-10-00.gz| gzip -9 > joined.gz
如果您有多个压缩文件.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