Frage Wie packst du eine Datei und speicherst die .gz-Datei?


Das Standardverhalten von gunzip besteht darin, die .gz-Datei nach dem Dekomprimieren zu löschen.

Wie verhindere ich das Löschen der Datei?

Wenn diese Funktionalität nicht enthalten ist, gibt es ein alternatives Programm, das dies erlaubt?

Ich benutze Ubuntu 9.04


208
2017-09-23 14:45


Ursprung


benutze den folgenden Befehl: gunzip -k - fazineroso
Was für ein Gunzip hat die Option -k? Ich sehe niemanden. - Znik
@ Znik, gzip / gunzip Version 1.6 und höher hat die Option -k. - alexander barakin


Antworten:


Du schaust nach:

gzcat x.txt.gz >x.txt

Das gzcat Befehl entspricht gunzip -c der einfach den Ausgabestrom schreibt stdout. Dies wird die komprimierte Datei unberührt lassen. So können Sie auch verwenden:

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

Beachten Sie, dass gzcat auf manchen Systemen auch als bekannt ist zcat So laufe stattdessen:

zcat x.txt.gz >x.txt

208
2017-09-23 14:48



Danke für die Antwort. Aufwachsen mit pkunzip in DOS Ich finde es so seltsam, dass es keine Option gibt, die Datei zu behalten. Besonders mit einem Tool wie gzip, das so weit verbreitet ist ... einfach komisch. - Sen
FYI, ich habe eigentlich keine gzcat. Weder mein lokales System noch das System, in das ich hineingeschaut wurde. Also muss ich gunzip -c benutzen - Sen
es ist wahrscheinlich nur zcat auf Ihrem System. - user23307
Eine zusätzliche Option, um die Datei zu behalten, wäre in der Tat nett. Zum Beispiel verwendet b (un) zip2 eine ähnliche Syntax und kann einfach hinzugefügt werden -k um die ursprüngliche Datei zu behalten. - schnaader
Sie können auch den Zeilenalias gzcat = "gunzip -c" zu Ihrer .bashrc hinzufügen - James Kingsbery


Du kannst den ... benutzen -c Option von gunzip, die die Ausgabe in stdout schreibt und dann an die Datei Ihrer Wahl weiterleitet:

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

Mehr Details auf der Handbuchseite.


52
2017-09-23 14:50



Übrigens, auf der Man-Seite, auf die oben Bezug genommen wurde, steht eine Option -k, was bedeutet, dass Eingabedateien beibehalten werden. Vielleicht funktioniert das auf der BSD-Version, aber auf meiner nicht, also scheint die -c-Lösung die richtige zu sein.


Eine einfachere Lösung ist, einfach gunzip als Filter zu verwenden:

gunzip < myfile.gz > myfile

30
2017-09-23 17:30



Ich denke, das ist der sauberste Weg seit gunzip nie weiß, welche Datei es bekommt, alles, was es sieht, ist ein Datenstrom, also kann die ursprüngliche Datei möglicherweise nicht ändern. - Walf


Wenn es sich tatsächlich um einen Tarball (Erweiterung .tgz oder .tar.gz) handelt, sollten Sie ihn nicht wie alle bisherigen Antworten in die Datei umleiten, sondern wie folgt:

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

damit du den eigentlichen Inhalt bekommst.


12
2017-09-23 15:22



oder mach einfach: tar xzvf myfile.tar.gz - Joakim Elofsson
stimmt, aber nur wenn du GNU tar hast. Das Beispiel von Solaris unterstützt die Option z nicht. - Alex


Benutze die -c Option, um die Datei auf stdout zu dekomprimieren. Es wird die Originaldatei nicht berühren.

gunzip -c myfile.gz > myfile

5
2017-09-23 14:52





gzip -dk myfile.gz

ODER

gunzip -k myfile.gz

Bemerkungen:

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

3
2017-11-05 12:55





Gnu tar kann gzip-Dateien lesen: tar -zxsvf myfile.tar.gz oder tar -jxzvf myfile.tar.bz2 für BZIP-Dateien.


2
2018-01-31 16:14