Comment gunzip un fichier et conserver le fichier .gz?


220

Le comportement par défaut de gunzip consiste à supprimer le fichier .gz après sa décompression.

Comment l'empêcher de supprimer le fichier?

Si cette fonctionnalité n'est pas incluse, existe-t-il un autre programme permettant cela?

J'utilise Ubuntu 9.04


3
utilisez la commande suivante: gunzip -k
fazineroso

Qu'est-ce que gunzip a l'option -k? Je ne vois personne.
Znik

1
@Znik, gzip / gunzip version 1.6 et supérieure a l'option-k .
aleksandr barakin

Réponses:


220

Vous cherchez:

gzcat x.txt.gz >x.txt

La gzcatcommande est équivalente à celle gunzip -cqui écrit simplement le flux de sortie dans stdout. Cela laissera le fichier compressé intact. Donc vous pouvez aussi utiliser:

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

Notez que sur certains systèmes, gzcat est également appelé zcatainsi:

zcat x.txt.gz >x.txt

2
Merci d'avoir répondu. En grandissant avec pkunzip sous DOS, je trouve cela tellement étrange qu'il n'y ait pas d'option pour conserver le fichier. Surtout avec un outil comme gzip étant si largement utilisé ... juste bizarre.
Sen le

4
Pour votre information, je n'ai pas de gzcat. Ni mon système local, ni le système dans lequel j'ai été ssh'ed. Donc, je dois utiliser gunzip -c
Sen le

26
c'est probablement juste zcat sur votre système.
user23307

2
Une option supplémentaire pour conserver le fichier serait bien. Par exemple, b (un) zip2 utilise une syntaxe similaire et permet simplement d’ajouter -kpour conserver le fichier original.
Schnaader

1
Vous pouvez également ajouter l’alias de ligne gzcat = "gunzip -c" à votre .bashrc
James Kingsbery

55

Vous pouvez utiliser l' -coption de gunzip qui écrit la sortie sur stdout, puis la rediriger vers le fichier de votre choix:

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

Plus de détails sur la page de manuel .


En passant, notez que la page de manuel mentionnée ci-dessus répertorie une option -k, ce qui signifie conserver les fichiers d'entrée. Peut-être que cela fonctionne sur la version BSD, mais pas sur la mienne, donc la solution -c semble être la bonne.

31

Une solution plus simple consiste à utiliser gunzip en tant que filtre comme celui-ci:

gunzip < myfile.gz > myfile

Je pense que c'est le moyen le plus propre car on gunzipne sait jamais quel fichier il obtient, tout ce qu'il voit est un flux de données, il est donc impossible de modifier le fichier d'origine.
Walf

12

S'il s'agit en fait d'une archive (extension .tgz ou .tar.gz), au lieu de rediriger vers un fichier contenant toutes les réponses jusqu'à présent, vous souhaiterez la rediriger vers tar, comme suit:

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

afin que vous obteniez le contenu réel.


7
ou tout simplement faire: tar xzvf myfile.tar.gz
Joakim Elofsson le

vrai, mais seulement si vous avez GNU tar. Celui fourni avec Solaris, par exemple, ne prend pas en charge l’option z.
Alex

5

Utilisez l' -coption pour décompresser le fichier sur stdout. Il ne touchera pas le fichier d'origine.

gunzip -c myfile.gz > myfile

4
gzip -dk myfile.gz

OU

gunzip -k myfile.gz

Commentaires:

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

2

Gnu tar peut lire les fichiers gzip: tar -zxsvf myfile.tar.gzou tar -jxzvf myfile.tar.bz2pour les fichiers tar bzippés.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.