Bagaimana cara gzip banyak file menjadi satu file gz?

74

Saya memiliki 100 file: cvd1.txt, cvd2.txt...cvd100.txt

Bagaimana gzip100 file menjadi satu .gzfile, sehingga setelah saya gunzipmemilikinya, saya harus punya cvd1.txt, cvd2.txt... cvd100.txtsecara terpisah?

Tony
sumber

Jawaban:

40

jika Anda memiliki zip,

zip myzip.zip cvd*.txt

Tidak perlu tarmereka terlebih dahulu.


sumber
1
@ Kurumi- Apakah program Windows seperti Winzip atau 7-zip mengenali file .zip?
1
@Tony. Saya percaya mereka melakukannya. Saya menguji versi linux 7-zip dengan zip dan mampu mengekstrak. Jika Anda mau, ada juga GNU zip untuk windows.
Anda kehilangan zgrep, zcmp, zdiffdan segala macam alat yang dapat bekerja pada pipa oleh pilihan Anda dari format non-streamable disebut zip. Pengguna listrik menggunakan pipa.
Tankman 六四
83

Anda ingin tarfile Anda bersama-sama dan gzipfile tar yang dihasilkan.

tar cvzf cvd.tar.gz cvd*.txt

Untuk menghapus file tar gzip'd yang akan Anda lakukan:

tar xvzf cvd.tar.gz -C /path/to/parent/dir

Ini akan mengekstrak file Anda di bawah /path/to/parent/dirdirektori

SiegeX
sumber
6
jika Anda memberi nama file dengan ekstensi .tgz, (kependekan dari tar gz), maka program Windows akan mengenalinya sebagai sesuatu yang dapat diproses oleh winzip dll. Selamat kepada SiegeX untuk 10 ribu Anda!
shellter
23

Anda ingin menggunakan tar, seperti:

tar -czvf file.tar.gz cvd*.txt

tar menyatukan file-file, sementara gzip kemudian melakukan kompresi.

Quoth the gzip manpage:

Jika Anda ingin membuat file arsip tunggal dengan banyak anggota sehingga anggota nantinya dapat diekstraksi secara independen, gunakan pengarsipan seperti tar atau zip. GNU tar mendukung opsi -z untuk menjalankan gzip secara transparan. gzip dirancang sebagai pelengkap tar, bukan sebagai pengganti

Dan Fego
sumber
13

gzip dengan sendirinya tidak tahu apa-apa tentang struktur file. Untuk melakukan apa yang Anda inginkan, Anda harus terlebih dahulu meletakkan file ke beberapa jenis file kontainer (misalnya struktur tar, atau serupa) dan kemudian gzip itu. tar memiliki z dan j (untuk bzip2) mengaktifkan platform GNU untuk melakukan ini.

Joe
sumber
2
Switch sebenarnya 'z' ('x' untuk ekstrak). Bagus yang Anda sebutkan 'j' / bzip2 - kompresi lebih ketat.
5

Anda dapat melakukannya dengan menggunakan:

gzip my_final_filename.gz my_first_file my_second_file ... my_last_file

gunzip my_final_filename.gz

atau

zip my_final_filename.zip my_first_file my_second_file ... my_last_file

unzip my_final_filename.gz

atau

tar cvzf my_final_filename.tar.gz my_first_file my_second_file ... my_last_file

tar -czvf my_final_filename.tar.gz
Vahid F
sumber
Saya tidak berpikir perintah pertama Anda berfungsi. Setidaknya secara umum. Jika itu berfungsi untuk shell tertentu Anda harus menunjukkannya. Saya akan downvote jika saya punya cukup perwakilan.
DPM
@ DPM benar, gzip/gunzipperintahnya tidak berfungsi, itu akan mengembalikan kesalahangzip: my_final_filename.gz: No such file or directory
Bilal
1

Untuk mengkompres banyak file dengan pola yang berbeda, kita dapat melakukan ini:

tar -czvf deploy.tar.gz **/Alice*.yml **/Bob*.json

ini akan menambahkan semua file .yml yang dimulai dengan Alice dari sub-direktori apa pun dan menambahkan semua file .json yang dimulai dengan Bob dari sub-direktori apa pun.

Sairam Krish
sumber
Sudah dijawab di superuser.com/a/334830/107419
prayagupd