Làm thế nào để bạn gunzip một tập tin và giữ tập tin .gz?


220

Hành vi mặc định của gunzip là xóa tệp .gz sau khi giải nén.

Làm thế nào để tôi ngăn chặn nó xóa các tập tin ??

Nếu chức năng này không được bao gồm thì có chương trình thay thế nào cho phép điều này không?

Tôi đang sử dụng Ubuntu 9.04


3
sử dụng lệnh sau: gunzip -k
fazineroso

Gunzip có tùy chọn -k nào? Tôi không thấy ai.
Znik

1
@Znik, gzip / gunzip phiên bản 1.6 trở lên có tùy chọn-k .
aleksandr barakin

Câu trả lời:


220

Bạn đang tìm:

gzcat x.txt.gz >x.txt

Các gzcatlệnh tương đương với gunzip -cmà chỉ đơn giản viết những dòng đầu ra stdout. Điều này sẽ để các tập tin nén không bị ảnh hưởng. Vì vậy, bạn cũng có thể sử dụng:

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

Lưu ý rằng trên một số hệ thống, gzcat còn được gọi là zcatchạy như thế này:

zcat x.txt.gz >x.txt

2
Cảm ơn câu trả lời. Lớn lên với pkunzip trong DOS Tôi thấy thật lạ khi không có tùy chọn để giữ tệp. Đặc biệt với một công cụ như gzip đang được sử dụng rộng rãi ... thật kỳ lạ.
Sen

4
FYI, tôi thực sự không có gzcat. Cả hệ thống cục bộ của tôi hoặc hệ thống tôi đã được đưa vào. Vì vậy, tôi phải sử dụng gunzip -c
Sen

26
nó có lẽ chỉ là zcat trên hệ thống của bạn.
dùng23307

2
Một tùy chọn bổ sung để giữ các tập tin sẽ thực sự tốt đẹp. Ví dụ: b (un) zip2 sử dụng cú pháp tương tự và cho phép chỉ cần thêm -kđể giữ tệp gốc.
schnaader

1
Bạn cũng có thể thêm dòng bí danh gzcat = "gunzip -c" vào .bashrc
James Kingsbery

55

Bạn có thể sử dụng -ctùy chọn gunzip ghi đầu ra ra thiết bị xuất chuẩn, sau đó chuyển nó sang tệp bạn chọn:

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

Thêm chi tiết trên trang hướng dẫn .


Nhân tiện, lưu ý rằng trang man được đề cập ở trên liệt kê tùy chọn -k, có nghĩa là giữ các tệp đầu vào. Có thể điều này hoạt động trên phiên bản BSD, nhưng nó không phải của tôi, vì vậy giải pháp -c dường như là giải pháp chính xác.

31

Một giải pháp đơn giản hơn là chỉ sử dụng gunzip làm bộ lọc như thế này:

gunzip < myfile.gz > myfile

Tôi nghĩ rằng đây là cách sạch nhất vì gunzipkhông bao giờ biết tệp nào sẽ nhận được, tất cả những gì nó thấy là một luồng dữ liệu, vì vậy không thể thay đổi tệp gốc.
Walf

12

Nếu nó thực sự là một tarball (phần mở rộng .tgz hoặc .tar.gz), thì thay vì chuyển hướng đến tệp như tất cả các câu trả lời cho đến nay, bạn sẽ muốn chuyển nó thành tar, như vậy:

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

để bạn có được nội dung thực tế.


7
hoặc chỉ cần làm: tar xzvf myfile.tar.gz
Joakim Elofsson

đúng, nhưng chỉ khi bạn có GNU tar. Ví dụ, ứng dụng đi kèm với Solaris không hỗ trợ tùy chọn z.
Alex

5

Sử dụng -ctùy chọn để giải nén tệp vào thiết bị xuất chuẩn. Nó sẽ không chạm vào tập tin gốc.

gunzip -c myfile.gz > myfile

4
gzip -dk myfile.gz

HOẶC LÀ

gunzip -k myfile.gz

Bình luận:

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

2

Gnu tar có thể đọc các tệp gzip: tar -zxsvf myfile.tar.gzhoặc tar -jxzvf myfile.tar.bz2cho các tệp tar được né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.