2013-05-23 4 views
15

私は3つのファイル:1.txt2.txtおよび3.txtがすべてgzipされていると言います。複数の.gzファイルを1つのファイルに抽出できるように組み合わせることはできますか?

cat 1.gz 2.gz 3.gz > 123.gz 

123.gzが抽出されている場合しかし、それは、元の3つのファイルが生成されます:私は、GZIPは複数のファイルが猫を使用して結合することを可能にすることを承知しています。

3つのアーカイブを結合して、アーカイブ内の個々のファイルを1つのファイルに結合することは可能ですか?

+0

伝統的なUnixの方法は、それらをタールすることです。 AFAIK [xz](http://tukaani.org/xz/)はあなたが望むことをすることができますが、それらはジップではありません。 – djf

+1

123.gzは何から抽出されますか? gunzip _will_という名前のファイルを123という名前の単一のファイルに展開します。 –

答えて

20

驚くべきことに、これは実際に可能です。

GNU zip man page states:複数の圧縮ファイルを連結することができます。この場合、gunzipはすべてのメンバーを一度に抽出します。

例:それを抽出その後

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 

gunzip -c all.gz > all.txt 

all.txtの内容は今のようになります。

1 
2 
3 

あなたはこのようなジップを構築することができますあなたが要求したとして - - 「gunzipを一度にすべてのメンバーを抽出します」

cat 1.txt 2.txt 3.txt 

そして:同じです210

4

複数のファイルを連結するためには、試してみてください。

gzip -c 1.txt > 123.gz 
gzip -c 2.txt >> 123.gz 
gzip -c 3.txt >> 123.gz 

その後、gzip -dc 123.gzcat 1.txt 2.txt 3.txtに相当します。

+0

私の場合は、各アーカイブがHadoopジョブの別の減速機によって書き込まれるため、これはうまくいきません。 – slayton

関連する問題