Bagaimana Anda mem-gunzip file dan menyimpan file .gz?

219

Perilaku default gunzip adalah menghapus file .gz setelah di-decompress.

Bagaimana saya mencegahnya menghapus file ??

Jika fungsi ini tidak termasuk maka apakah ada program alternatif yang memungkinkan ini?

Saya menggunakan Ubuntu 9.04

Sen
sumber
3
gunakan perintah berikut: gunzip -k
fazineroso
apa gunzip memiliki opsi -k? Saya tidak melihat siapa pun.
Znik
1
@Znik, gzip / gunzip versi 1.6 dan lebih tinggi memiliki opsi-k .
aleksandr barakin

Jawaban:

220

Kamu sedang mencari:

gzcat x.txt.gz >x.txt

The gzcatperintah setara dengan gunzip -cyang hanya menulis output stream untuk stdout. Ini akan membuat file terkompresi tidak tersentuh. Jadi, Anda juga dapat menggunakan:

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

Perhatikan bahwa pada beberapa sistem, gzcat juga dikenal sebagai zcatrun seperti ini:

zcat x.txt.gz >x.txt
rogerdpack
sumber
2
Terima kasih atas jawabannya. Tumbuh dengan pkunzip di DOS saya merasa sangat aneh bahwa tidak ada pilihan untuk menyimpan file. Terutama dengan alat seperti gzip yang begitu banyak digunakan ... hanya aneh.
Sen
4
FYI, saya sebenarnya tidak punya gzcat. Baik sistem lokal saya atau sistem saya ssh'ed ke dalam. Jadi, saya harus menggunakan gunzip -c
Sen
25
itu mungkin hanya zcat di sistem Anda.
user23307
2
Opsi tambahan untuk menyimpan file tentu saja menyenangkan. Sebagai contoh, b (un) zip2 menggunakan sintaksis yang sama dan memungkinkan untuk hanya menambahkan -kuntuk menyimpan file asli.
schnaader
1
Anda juga dapat menambahkan baris alias gzcat = "gunzip -c" ke .bashrc Anda
James Kingsbery
55

Anda dapat menggunakan -copsi gunzip yang menulis output ke stdout, dan kemudian mengirimkannya ke file pilihan Anda:

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

Lebih detail di halaman manual .

Stef
sumber
By the way, perhatikan bahwa halaman manual yang disebutkan di atas mencantumkan opsi -k, yang berarti menyimpan file input. Mungkin ini bekerja pada versi BSD, tetapi tidak pada saya, jadi solusi -c tampaknya menjadi yang benar.
31

Solusi yang lebih sederhana adalah dengan menggunakan gunzip sebagai filter seperti ini:

gunzip < myfile.gz > myfile
retracile
sumber
Saya pikir ini adalah cara terbersih karena gunziptidak pernah tahu file apa yang didapatnya, yang dilihatnya adalah aliran data, jadi tidak mungkin mengubah file asli.
Walf
12

Jika itu sebenarnya tarball (ekstensi .tgz atau .tar.gz), maka alih-alih mengarahkan ulang ke file seperti semua jawaban sejauh ini, Anda ingin mengirimkannya ke tar, seperti:

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

sehingga Anda mendapatkan konten yang sebenarnya.

Alex
sumber
7
atau lakukan saja: tar xzvf myfile.tar.gz
Joakim Elofsson
benar, tetapi hanya jika Anda memiliki GNU tar. Yang datang dengan Solaris, misalnya, tidak mendukung opsi z.
Alex
5

Gunakan -copsi untuk membuka kompresi file ke stdout. Itu tidak akan menyentuh file asli.

gunzip -c myfile.gz > myfile
massa
sumber
4
gzip -dk myfile.gz

ATAU

gunzip -k myfile.gz

Komentar:

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

Gnu tar dapat membaca file gzip: tar -zxsvf myfile.tar.gzatau tar -jxzvf myfile.tar.bz2untuk file tar bzipped.

Justin Smith
sumber