Questão Como você gunzip um arquivo e manter o arquivo .gz?


O comportamento padrão do gunzip é excluir o arquivo .gz após a descompactação.

Como faço para evitar que exclua o arquivo?

Se esta funcionalidade não estiver incluída, existe um programa alternativo que permita isso?

Estou usando o Ubuntu 9.04


208


origem


use o seguinte comando: gunzip -k - fazineroso
o gunzip tem a opção -k? Eu não vejo ninguém. - Znik
@Znik, gzip / gunzip versão 1.6 e superior tem a opção -k. - alexander barakin


Respostas:


Você está procurando por:

gzcat x.txt.gz >x.txt

o gzcat comando é equivalente a gunzip -c que simplesmente escreve o fluxo de saída para stdout. Isso deixará o arquivo compactado intocado. Então você também pode usar:

gunzip -c x.txt.gz >x.txt

Note que em alguns sistemas gzcat também é conhecido como zcat então corra assim:

zcat x.txt.gz >x.txt

208



Obrigado pela resposta. Crescendo com pkunzip no DOS eu acho tão estranho que não há uma opção para manter o arquivo. Especialmente com uma ferramenta como gzip sendo tão usada ... apenas estranha. - Sen
FYI, eu realmente não tenho gzcat. Nem meu sistema local ou o sistema em que eu estava entrando. Então, eu tenho que usar gunzip -c - Sen
provavelmente é apenas zcat no seu sistema. - user23307
Uma opção adicional para manter o arquivo seria realmente bom. Por exemplo, b (un) zip2 usa sintaxe semelhante e permite simplesmente adicionar -k para manter o arquivo original. - schnaader
Você também pode adicionar a linha alias gzcat = "gunzip -c" ao seu .bashrc - James Kingsbery


Você pode usar o -c opção de gunzip que grava a saída para stdout e, em seguida, canaliza-a para o arquivo de sua escolha:

gunzip -c compressed-file.gz > decompressed-file

Mais detalhes sobre o página de manual.


52



A propósito, observe que a página man mencionada acima lista uma opção -k, o que significa manter os arquivos de entrada. Talvez isso funcione na versão BSD, mas não na minha, então a solução -c parece ser a correta.


Uma solução mais simples é simplesmente usar o gunzip como um filtro como este:

gunzip < myfile.gz > myfile

30



Eu acho que esse é o caminho mais limpo desde gunzip nunca se sabe qual arquivo está recebendo, tudo o que ele vê é um fluxo de dados, portanto, não é possível alterar o arquivo original. - Walf


Se é realmente um tarball (extensão .tgz ou .tar.gz), então ao invés de redirecionar para o arquivo como todas as respostas até o momento, você vai querer canalizá-lo para tar, assim:

gunzip -c myfile.tar.gz | tar xvf -

para que você obtenha o conteúdo real.


12



ou apenas faça: tar xzvf myfile.tar.gz - Joakim Elofsson
true, mas somente se você tiver o tar GNU. O que vem com o Solaris, por exemplo, não suporta a opção z. - Alex


Use o -c opção para descompactar o arquivo para stdout. Não vai tocar no arquivo original.

gunzip -c myfile.gz > myfile

5





gzip -dk myfile.gz

OU

gunzip -k myfile.gz

Comentários:

   -k --keep    Keep (don't delete) input files during compression or decompression.

3





O Gnu tar pode ler arquivos gzip: tar -zxsvf myfile.tar.gz ou tar -jxzvf myfile.tar.bz2 para arquivos tar bzipados.


2