gunzip semua file .gz di direktori

24

Saya memiliki direktori dengan banyak .txt.gzfile (di mana namanya tidak mengikuti pola tertentu.)

Apa cara paling sederhana bagi gunzipmereka? Saya ingin mempertahankan nama asli mereka, sehingga mereka beralih dari whatevz.txt.gzkewhatevz.txt

Kucing Unfun
sumber

Jawaban:

42

Bagaimana dengan ini saja?

$ gunzip *.txt.gz

gunzipakan membuat file zip tanpa .gzakhiran dan menghapus file asli secara default (lihat di bawah untuk detail). *.txt.gzakan diperluas oleh shell Anda ke semua file yang cocok.

Bit terakhir ini bisa membuat Anda mendapat masalah jika itu diperluas ke daftar file yang sangat panjang. Dalam hal itu, coba gunakan finddan -execlakukan pekerjaan untuk Anda.


Dari halaman manual gzip(1):

gunzip takes a list of files on its command line and  replaces  each  file
whose  name  ends  with  .gz, -gz, .z, -z, or _z (ignoring case) and which
begins with the correct magic number with an uncompressed file without the
original  extension.

Catatan tentang 'nama asli'

gzip dapat menyimpan dan mengembalikan nama file yang digunakan pada waktu kompresi. Bahkan jika Anda mengganti nama file yang dikompresi, Anda dapat terkejut mengetahui itu mengembalikan ke nama aslinya lagi.

Dari halaman manual gzip:

Secara default, gzip menyimpan nama file asli dan cap waktu di file terkompresi. Ini digunakan saat mendekompres file dengan -Nopsi. Ini berguna ketika nama file terkompresi terpotong atau ketika cap waktu tidak dipertahankan setelah transfer file.

Dan nama file yang disimpan dalam metadata ini juga dapat dilihat dengan file:

$ echo "foo" > myfile_orig
$ gzip myfile_orig 
$ mv myfile_orig.gz myfile_new.gz 
$ file myfile_new.gz 
myfile_new.gz: gzip compressed data, was "myfile_orig", last modified: Mon Aug  5 08:46:39 2019, from Unix
$ gunzip myfile_new.gz        # gunzip without -N
$ ls myfile_*
myfile_new

$ rm myfile_*
$ echo "foo" > myfile_orig
$ gzip myfile_orig
$ mv myfile_orig.gz myfile_new.gz 
# gunzip with -N
$ gunzip -N myfile_new.gz     # gunzip with -N
$ ls myfile_*
myfile_orig
gertvdijk
sumber
0

Jika Anda ingin menyimpan .gzfile, Anda dapat menggunakan yang berikut ini: $ gunzip -c inputfile.gz >outputfile

sumion
sumber
0

Gunakan perintah ini untuk gunzip (unzip gz files) semua file di direktori saat ini dan simpan yang asli:

gunzip -k *.gz
gansvv
sumber