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

Sen
la source
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
rogerdpack
la source
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 .

Stef
la source
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
rétracile
la source
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.

Alex
la source
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
foule
la source
4
gzip -dk myfile.gz

OU

gunzip -k myfile.gz

Commentaires:

   -k --keep    Keep (don't delete) input files during compression or decompression.
Nabi KAZ
la source
2

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

Justin Smith
la source