Como você injeta um arquivo e mantém o arquivo .gz?


220

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

Como evito que ele exclua o arquivo?

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

Estou usando o Ubuntu 9.04


3
use o seguinte comando: gunzip -k
fazineroso

que gunzip tem a opção -k? Não vejo ninguém.
Znik 27/11/2015

1
@Znik, gzip / gunzip versão 1.6 e superior tem a opção-k .
aleksandr Barakin

Respostas:


220

Você está procurando:

gzcat x.txt.gz >x.txt

O gzcatcomando é equivalente ao gunzip -cqual simplesmente grava o fluxo de saída stdout. Isso deixará o arquivo compactado intocado. Então você também pode usar:

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

Observe que em alguns sistemas o gzcat também é conhecido como sendo zcatexecutado assim:

zcat x.txt.gz >x.txt

2
Obrigado pela resposta. Crescendo com o pkunzip no DOS, acho tão estranho que não há uma opção para manter o arquivo. Especialmente com uma ferramenta como o gzip sendo tão amplamente usada ... apenas estranha.
23409 Sen

4
Para sua informação, na verdade não tenho gzcat. Nem o meu sistema local nem o sistema em que fui transferido. Então, eu tenho que usar gunzip -c
Sen

26
provavelmente é apenas o zcat no seu sistema.
precisa saber é o seguinte

2
Uma opção adicional para manter o arquivo seria realmente agradável. Por exemplo, b (un) zip2 usa sintaxe semelhante e permite simplesmente adicionar -kpara manter o arquivo original.
schnaader 8/09/11

1
Você também pode adicionar o gzcat linha alias = "gunzip -c" para o seu .bashrc
James Kingsbery

55

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

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

Mais detalhes na página do manual .


A propósito, observe que a página de manual 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.

31

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

gunzip < myfile.gz > myfile

Eu acho que essa é a maneira mais limpa, pois gunzipnunca se sabe qual arquivo está recebendo, tudo o que vê é um fluxo de dados; portanto, não é possível alterar o arquivo original.
Walf

12

Se na verdade é um tarball (extensão .tgz ou .tar.gz), em vez de redirecionar para o arquivo como todas as respostas até agora, convém canalizá-lo para o tar, da seguinte maneira:

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

para que você obtenha o conteúdo real.


7
ou apenas fazer: myfile.tar.gz tar xzvf
Joakim Elofsson

true, mas somente se você tiver o GNU tar. O que acompanha o Solaris, por exemplo, não suporta a opção z.
Alex

5

Use a -copção para descompactar o arquivo em stdout. Não tocará no arquivo original.

gunzip -c myfile.gz > myfile

4
gzip -dk myfile.gz

OU

gunzip -k myfile.gz

Comentários:

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

2

O gnu tar pode ler arquivos gzip: tar -zxsvf myfile.tar.gzou tar -jxzvf myfile.tar.bz2para arquivos tar bzipados.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.