題 你如何gunzip文件並保留.gz文件?


gunzip的默認行為是在解壓縮後刪除.gz文件。

如何防止它刪除文件?

如果沒有包含此功能,那麼是否有允許此功能的替代程序?

我正在使用Ubuntu 9.04


209
2017-09-23 14:45


起源


使用以下命令:gunzip -k - fazineroso
什麼gunzip有-k選項?我看不見任何人。 - Znik
@Znik, 的gzip / gunzip解 版本1.6及更高版本 有選擇權 -k。 - alexander barakin


答案:


您正在尋找:

gzcat x.txt.gz >x.txt

gzcat 命令相當於 gunzip -c 它只是將輸出流寫入 stdout。這將使壓縮文件保持不變。所以你也可以使用:

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

請注意,在某些系統上,gzcat也稱為 zcat 所以這樣運行:

zcat x.txt.gz >x.txt

210
2017-09-23 14:48



謝謝你的回答。在DOS中與pkunzip一起成長我覺得很奇怪,沒有選項來保存文件。特別是像gzip這樣的工具如此廣泛使用......只是很奇怪。 - Sen
僅供參考,我實際上沒有gzcat。我的本地系統或系統都沒有進入。所以,我必須使用gunzip -c - Sen
它可能只是你係統上的zcat。 - user23307
保留文件的另一個選項確實很好。例如,b(un)zip2使用類似的語法並允許簡單地添加 -k 保留原始文件。 - schnaader
您還可以在.bashrc中添加行別名gzcat =“gunzip -c” - James Kingsbery


你可以使用 -c gunzip選項將輸出寫入stdout,然後將其傳送到您選擇的文件:

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

關於的更多細節 手冊頁


52
2017-09-23 14:50



順便說一下,請注意上面提到的手冊頁列出了-k選項,這意味著保留輸入文件。也許這適用於BSD版本,但它不適用於我的,所以-c解決方案似乎是正確的。


一個更簡單的解決方案是使用gunzip作為這樣的過濾器:

gunzip < myfile.gz > myfile

31
2017-09-23 17:30



我認為這是最乾淨的方式 gunzip 從來不知道它得到了什麼文件,它看到的只是一個數據流,所以不可能改變原始文件。 - Walf


如果它實際上是一個tarball(.tgz或.tar.gz擴展名),那麼你不想像目前為止所有的答案那樣重定向到文件,而是要將它傳遞給tar,就像這樣:

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

這樣你就可以得到實際的內容。


12
2017-09-23 15:22



或者只是這樣做:tar xzvf myfile.tar.gz - Joakim Elofsson
是的,但只有你有GNU tar。例如,Solaris附帶的那個不支持z選項。 - Alex


使用 -c 將文件解壓縮到stdout的選項。它不會觸及原始文件。

gunzip -c myfile.gz > myfile

5
2017-09-23 14:52





gzip -dk myfile.gz

要么

gunzip -k myfile.gz

評論:

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

3
2017-11-05 12:55





Gnu tar可以讀取gzip文件: tar -zxsvf myfile.tar.gz 要么 tar -jxzvf myfile.tar.bz2 對於bzipped tar文件。


2
2018-01-31 16:14