Come si effettua la compressione di un file e si conserva il file .gz?


220

Il comportamento predefinito di gunzip è quello di eliminare il file .gz dopo la decompressione.

Come posso impedirgli di eliminare il file ??

Se questa funzionalità non è inclusa, esiste un programma alternativo che lo consente?

Sto usando Ubuntu 9.04


3
utilizzare il seguente comando: gunzip -k
fazineroso

quale gunzip ha l'opzione -k? Non vedo nessuno
Znik,

1
@Znik, gzip / gunzip versione 1.6 e successive ha l'opzione-k .
Aleksandr Barakin,

Risposte:


220

Stai cercando:

gzcat x.txt.gz >x.txt

Il gzcatcomando è equivalente al gunzip -cquale scrive semplicemente il flusso di output in stdout. Questo lascerà intatto il file compresso. Quindi puoi anche usare:

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

Si noti che su alcuni sistemi gzcat è anche noto come zcatquindi eseguire in questo modo invece:

zcat x.txt.gz >x.txt

2
Grazie per la risposta. Crescendo con pkunzip in DOS lo trovo così strano che non esiste un'opzione per conservare il file. Soprattutto con uno strumento come gzip che è così ampiamente usato ... solo strano.
Sen

4
Cordiali saluti, in realtà non ho gzcat. Né il mio sistema locale né il sistema in cui sono stato lanciato. Quindi, devo usare gunzip -c
Sen

26
probabilmente è solo zcat sul tuo sistema.
user23307

2
Un'opzione aggiuntiva per mantenere il file sarebbe davvero bella. Ad esempio, b (un) zip2 utilizza una sintassi simile e consente semplicemente di aggiungere -kper mantenere il file originale.
Schnaader,

1
Puoi anche aggiungere la riga alias gzcat = "gunzip -c" al tuo .bashrc
James Kingsbery

55

È possibile utilizzare l' -copzione di gunzip che scrive l'output su stdout, quindi reindirizzarlo al file desiderato:

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

Maggiori dettagli sulla pagina del manuale .


A proposito, nota che la pagina man di cui sopra elenca un'opzione -k, che significa mantenere i file di input. Forse questo funziona con la versione BSD, ma non con la mia, quindi la soluzione -c sembra essere quella corretta.

31

Una soluzione più semplice è usare semplicemente gunzip come un filtro come questo:

gunzip < myfile.gz > myfile

Penso che questo sia il modo più pulito poiché gunzipnon sa mai quale file sta ricevendo, tutto ciò che vede è un flusso di dati, quindi non è possibile modificare il file originale.
Walf

12

Se in realtà è un tarball (estensione .tgz o .tar.gz), invece di reindirizzare a file come tutte le risposte finora, ti consigliamo di reindirizzarlo a tar, in questo modo:

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

in modo da ottenere i contenuti effettivi.


7
o semplicemente: tar xzvf myfile.tar.gz
Joakim Elofsson,

vero, ma solo se hai tar GNU. Quello fornito con Solaris, ad esempio, non supporta l'opzione z.
Alex,

5

Utilizzare l' -copzione per decomprimere il file in stdout. Non toccherà il file originale.

gunzip -c myfile.gz > myfile

4
gzip -dk myfile.gz

O

gunzip -k myfile.gz

Commenti:

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

2

Gnu tar è in grado di leggere i file gzip: tar -zxsvf myfile.tar.gzo tar -jxzvf myfile.tar.bz2per i file tar compressi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.