Làm cách nào để gzip nhiều tệp vào một tệp gz?


74

Tôi có 100 tệp : cvd1.txt, cvd2.txt...cvd100.txt

Làm thế nào để gzip100 tệp thành một .gztệp, để sau khi tôi gunzip, tôi nên có cvd1.txt, cvd2.txt... cvd100.txtriêng biệt?

Câu trả lời:


40

nếu bạn có zip,

zip myzip.zip cvd*.txt

Đừng cần tarhọ trước.


1
@ Kurumi- Các chương trình Windows như Winzip hoặc 7-zip có nhận ra tệp .zip không?

1
@Tony. Tôi tin rằng họ làm. Tôi đã thử nghiệm phiên bản linux 7-zip với zip và có thể giải nén. Nếu bạn muốn, cũng có GNU zip cho windows.

Bạn bị mất zgrep, zcmp, zdiffvà tất cả các loại công cụ có thể làm việc trên ống bởi sự lựa chọn của bạn của một định dạng không streamable gọi zip. Người sử dụng điện sử dụng đường ống.
Tankman

83

Bạn muốn tartập tin của bạn với nhau và gziptập tin tar kết quả.

tar cvzf cvd.tar.gz cvd*.txt

Để gỡ bỏ tệp tar của gzip, bạn sẽ làm:

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

Điều này sẽ giải nén các tập tin của bạn trong /path/to/parent/dirthư mục


6
nếu bạn đặt tên tệp với phần mở rộng .tgz, (viết tắt của tar gz), thì các chương trình Windows sẽ nhận ra nó là một cái gì đó mà winzip, v.v. Xin chúc mừng SiegeX cho 10K của bạn!
shellter

23

Bạn sẽ muốn sử dụng tar, như vậy:

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

tar đặt các tệp lại với nhau, trong khi gzip sau đó thực hiện nén.

Làm sạch trang web gzip:

Nếu bạn muốn tạo một tệp lưu trữ duy nhất có nhiều thành viên để sau đó các thành viên có thể được trích xuất độc lập, hãy sử dụng một trình lưu trữ như tar hoặc zip. GNU tar hỗ trợ tùy chọn -z để gọi gzip trong suốt. gzip được thiết kế như một sự bổ sung cho tar, không phải là sự thay thế


13

gzip tự nó không biết gì về cấu trúc tập tin. Để làm những gì bạn muốn, trước tiên bạn cần đặt các tệp vào một số loại tệp chứa (ví dụ: cấu trúc tar hoặc tương tự) và sau đó gzip nó. tar có các công tắc z và j (đối với bzip2) trên nền tảng GNU để thực hiện việc này.


2
Công tắc thực sự là 'z' ('x' là để giải nén). Rất vui, bạn đã đề cập 'j' / bzip2 - nén chặt hơn nhiều.

5

Bạn có thể làm điều đó bằng cách sử dụng:

gzip my_final_filename.gz my_first_file my_second_file ... my_last_file

gunzip my_final_filename.gz

hoặc là

zip my_final_filename.zip my_first_file my_second_file ... my_last_file

unzip my_final_filename.gz

hoặc là

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

tar -czvf my_final_filename.tar.gz

Tôi không nghĩ rằng lệnh đầu tiên của bạn hoạt động. Ít nhất là nói chung. Nếu nó hoạt động cho một vỏ cụ thể, bạn nên chỉ ra nó. Tôi sẽ downvote nếu tôi có đủ đại diện.
DPM

@DPM đã đúng, các gzip/gunziplệnh không hoạt động, nó sẽ trả về lỗigzip: my_final_filename.gz: No such file or directory
Bilal

1

Để nén nhiều tệp với các mẫu khác nhau, chúng tôi có thể:

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

điều này sẽ thêm tất cả các tệp .yml bắt đầu với Alice từ bất kỳ thư mục con nào và thêm tất cả các tệp .json bắt đầu bằng Bob từ bất kỳ thư mục con nào.


Đã được trả lời trong superuser.com/a/334830/107419
nguyện
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.