Combine dois ou mais arquivos compactados

1

Eu tenho 2 arquivos gz aqueles que eu preciso para mesclar em um - ou seja, eu quero combinar dois arquivos .gz em um tal que quando eu extraio o arquivo combinado recebo um único arquivo contendo a concatenação do original arquivos de entrada.

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

A declaração acima não está funcionando como esperado. Eu estou usando 3 comandos para fazer o necessário.

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 

e, em seguida, concatenar os arquivos juntos quando eu extraí-los para produzir a saída que eu quero.

Existe alguma maneira de fazer isso em uma declaração?

    
por shantanuo 27.06.2012 / 06:39

3 respostas

2

Surpreendentemente, o que o Quanta postou nos comentários funciona - pelo menos no meu 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
$

Estou um pouco perturbado, mas também impressionado.

    
por 27.07.2012 / 22:36
5

Eu acho que você quer dizer:

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

    
por 27.06.2012 / 11:00
1

Se você tiver vários arquivos compactados .gz e precisar combiná-los em um arquivo, poderá usar tar diretamente para fazer isso. Não há necessidade de descompactar e depois compactá-los novamente.

Você pode tentar isso:

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

No entanto, você obterá um arquivo com extensão .gz.tar em oposição ao conhecido .tar.gz . Para descompactar o arquivo, você pode tentar:

tar -xavf combined.gz.tar

A opção -a é útil aqui (de man tar ):

-a, --auto-compress
       use archive suffix to determine the compression program
    
por 27.06.2012 / 09:03

Tags