¿Cómo se comprime un archivo y se mantiene el archivo .gz?


220

El comportamiento predeterminado de gunzip es eliminar el archivo .gz después de que se descomprime.

¿Cómo evito que elimine el archivo?

Si esta funcionalidad no está incluida, ¿hay algún programa alternativo que lo permita?

Estoy usando Ubuntu 9.04


3
use el siguiente comando: gunzip -k
fazineroso

¿Qué gunzip tiene la opción -k? No veo a nadie
Znik

1
@Znik, gzip / gunzip versión 1.6 y superior tiene la opción-k .
aleksandr barakin

Respuestas:


220

Estas buscando:

gzcat x.txt.gz >x.txt

El gzcatcomando es equivalente al gunzip -cque simplemente escribe la secuencia de salida stdout. Esto dejará el archivo comprimido intacto. Entonces también puedes usar:

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

Tenga en cuenta que, en algunos sistemas, gzcat también se conoce como zcatejecutar así:

zcat x.txt.gz >x.txt

2
Gracias por la respuesta. Al crecer con pkunzip en DOS, me resulta tan extraño que no hay una opción para mantener el archivo. Especialmente con una herramienta como gzip que se usa tanto ... simplemente extraño.
Sen

44
FYI, en realidad no tengo gzcat. Ni mi sistema local ni el sistema en el que me metieron. Entonces, tengo que usar gunzip -c
Sen

26
probablemente sea solo zcat en su sistema.
user23307

2
Una opción adicional para mantener el archivo sería realmente buena. Por ejemplo, b (un) zip2 usa una sintaxis similar y permite simplemente agregar -kpara mantener el archivo original.
schnaader

1
También puede agregar la línea alias gzcat = "gunzip -c" a su .bashrc
James Kingsbery

55

Puede usar la -copción de gunzip que escribe la salida en stdout y luego canalizarla al archivo de su elección:

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

Más detalles en la página del manual .


Por cierto, tenga en cuenta que la página del manual mencionada anteriormente enumera una opción -k, lo que significa mantener los archivos de entrada. Tal vez esto funcione en la versión BSD, pero no en la mía, por lo que la solución -c parece ser la correcta.

31

Una solución más simple es usar gunzip como un filtro como este:

gunzip < myfile.gz > myfile

Creo que esta es la forma más limpia ya que gunzipnunca sabe qué archivo está obteniendo, todo lo que ve es un flujo de datos, por lo que no es posible alterar el archivo original.
Walf

12

Si en realidad es un tarball (extensión .tgz o .tar.gz), en lugar de redirigir a un archivo como todas las respuestas hasta ahora, querrás canalizarlo a tar, de esta manera:

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

para que obtengas el contenido real.


77
o simplemente hacer: tar xzvf myfile.tar.gz
Joakim Elofsson

cierto, pero solo si tienes GNU tar. El que viene con Solaris, por ejemplo, no admite la opción z.
Alex

5

Use la -copción para descomprimir el archivo a stdout. No tocará el archivo original.

gunzip -c myfile.gz > myfile

4
gzip -dk myfile.gz

O

gunzip -k myfile.gz

Comentarios:

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

2

Gnu tar puede leer archivos gzip: tar -zxsvf myfile.tar.gzo tar -jxzvf myfile.tar.bz2para archivos tar bzipped.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.