Wie packen Sie eine Datei und behalten die .gz-Datei?

190973
Sen

Das Standardverhalten von gunzip ist das Löschen der GZ-Datei, nachdem diese dekomprimiert wurde.

Wie kann ich verhindern, dass die Datei gelöscht wird?

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

Ich verwende Ubuntu 9.04

209
Verwenden Sie den folgenden Befehl: gunzip -k fazineroso vor 8 Jahren 3
welche gunzip -k Option hat? Ich sehe niemanden Znik vor 8 Jahren 0
@Znik, * gzip / gunzip * Version 1.6 und höher [hat die Option "-k"] (http://git.savannah.gnu.org/cgit/gzip.git/commit/?id=0192f02e26ac9fa0a27a17a26a3ea73d5e95c). alexander barakin vor 7 Jahren 1

7 Antworten auf die Frage

210
rogerdpack

Du schaust nach:

gzcat x.txt.gz >x.txt 

Der gzcatBefehl entspricht dem, in gunzip -cden der Ausgabestrom einfach geschrieben wird stdout. Dadurch bleibt die komprimierte Datei erhalten. So können Sie auch verwenden:

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

Beachten Sie, dass auf einigen Systemen gzcat auch als zcatso bezeichnet wird:

zcat x.txt.gz >x.txt 
Danke für die Antwort. Mit pkunzip in DOS aufzuwachsen finde ich es so seltsam, dass es keine Option gibt, die Datei zu behalten. Vor allem, wenn ein Werkzeug wie gzip so weit verbreitet ist ... einfach komisch. Sen vor 14 Jahren 2
Zu Ihrer Information, ich habe eigentlich kein gzcat. Weder mein lokales System noch das System, in das ich eingebunden wurde. Also muss ich gunzip -c verwenden Sen vor 14 Jahren 4
Es ist wahrscheinlich nur Zcat auf Ihrem System. user23307 vor 14 Jahren 23
Eine zusätzliche Option zum Speichern der Datei wäre in der Tat eine nette Sache. Zum Beispiel verwendet b (un) zip2 eine ähnliche Syntax und erlaubt das Hinzufügen von -k, um die Originaldatei beizubehalten. schnaader vor 12 Jahren 2
Sie können auch den Zeilenalias gzcat = "gunzip -c" zu Ihrem .bashrc hinzufügen James Kingsbery vor 12 Jahren 1
@Sen: pkunzip ist direkter vergleichbar mit tar -xzf ; Es extrahiert mehrere Dateien aus einer komprimierten Datei und entfernt die komprimierte Datei nicht. In * NIX-Systemen werden die Konzepte "Mehrere Dateien bündeln" und "Daten komprimieren" nicht wie bei .zip kombiniert. Das heißt, wenn neue Komprimierungssysteme auf den Markt kommen, müssen wir den Code / die Logik "Bündeln mehrerer Dateien" nicht neu erfinden / erneut implementieren. retracile vor 11 Jahren 0
Lassen Sie mich @JamesKingsbery klarstellen, wo die Zeile beginnt und endet `alias gzcat =" gunzip -c "` ... Natürlich macht es mir nichts aus, nur `zcat 'zu verwenden. Weniger Tippen, energieeffizienter;) Buttle Butkus vor 11 Jahren 0
Während diese Antwort mir geholfen hat, möchte ich immer noch den Mann bestrafen, der diesen Befehl entworfen hat und entschied, dass das destruktive Verhalten der Standard sein sollte. donquixote vor 10 Jahren 0
@schnaader sieht aus, als hätte gunzip ab Version 1.6 die Option --keep unterstützt ... Jacob vor 9 Jahren 1
Ah, danke Jakob! @paxdiablo, können Sie die Antwort so bearbeiten, dass sie ein Beispiel für die Funktion -k gibt? (http://savannah.gnu.org/forum/forum.php?forum_id=7623, Absatz "Neue Funktionen") schnaader vor 9 Jahren 0
Diese Prozedur funktioniert nicht, wenn der Anfang der Datei beschädigt ist. Znik vor 8 Jahren 0
52
Stef

Sie können die -cOption gunzip verwenden, die die Ausgabe in stdout schreibt und dann an die Datei Ihrer Wahl weiterleitet:

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

Weitere Details auf der Handbuchseite .

Beachten Sie übrigens, dass in der oben genannten Manpage eine Option -k aufgeführt ist, dh Eingabedateien behalten. Vielleicht funktioniert das auf der BSD-Version, aber auf meiner nicht, daher scheint die -c-Lösung die richtige zu sein. vor 13 Jahren 0
31
retracile

Eine einfachere Lösung ist die Verwendung von gunzip als Filter wie folgt:

gunzip < myfile.gz > myfile 
Ich denke, dies ist der sauberste Weg, da "gunzip" nie weiß, welche Datei er erhält. Alles, was er sieht, ist ein Datenstrom, daher kann die Originaldatei nicht geändert werden. Walf vor 7 Jahren 0
12
Alex

Wenn es sich tatsächlich um einen Tarball handelt (.tgz- oder .tar.gz-Erweiterung), dann sollten Sie, anstatt wie alle bisherigen Antworten in eine Datei umzuleiten, diese an tar weiterleiten, z.

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

damit Sie den tatsächlichen Inhalt bekommen.

oder machen Sie einfach: tar xzvf myfile.tar.gz Joakim Elofsson vor 14 Jahren 7
wahr, aber nur wenn Sie GNU-tar haben. Die mit Solaris gelieferte Option unterstützt beispielsweise die z-Option nicht. Alex vor 14 Jahren 0
5
mob

Verwenden Sie die -cOption, um die Datei in stdout zu dekomprimieren. Die Originaldatei wird nicht berührt.

gunzip -c myfile.gz > myfile 
3
Nabi K.A.Z.
gzip -dk myfile.gz 

ODER

gunzip -k myfile.gz 

Bemerkungen:

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

Gnu-tar kann gzip-Dateien lesen: tar -zxsvf myfile.tar.gzoder tar -jxzvf myfile.tar.bz2für umgehängte tar-Dateien.