web-dev-qa-db-ja.com

2つ以上の圧縮ファイルを組み合わせる

2つのgzファイルを1つにマージする必要があります。つまり、2つの.gzファイルを1つに結合して、結合したファイルを抽出すると、元の入力ファイルの連結を含む1つのファイルを取得します。

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つのステートメントでこれを行う方法はありますか?

2
shantanuo

驚くべきことに、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
$

少し不安ですが、感動しました。

4
voretaq7

私はあなたが意味すると思います:

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

6
Bgs

複数の圧縮ファイル.gzがあり、それらを1つのファイルに結合する必要がある場合は、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
1
Khaled