คุณ gunzip ไฟล์และเก็บไฟล์. gz อย่างไร


220

พฤติกรรมเริ่มต้นของ gunzip คือการลบไฟล์. gz หลังจากคลายการบีบอัด

ฉันจะป้องกันไม่ให้ลบไฟล์ได้อย่างไร?

หากฟังก์ชั่นนี้ไม่รวมอยู่มีโปรแกรมทางเลือกอื่นที่อนุญาตให้ทำเช่นนี้หรือไม่?

ฉันใช้ Ubuntu 9.04


3
ใช้คำสั่งต่อไปนี้: gunzip -k
fazineroso

สิ่งที่ gunzip มีตัวเลือก -k? ฉันไม่เห็นใคร
Znik

1
@Znik, gzip / gunzipรุ่น 1.6 และสูงกว่ามีตัวเลือก -k
aleksandr barakin

คำตอบ:


220

คุณกำลังมองหา:

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

2
ขอบคุณสำหรับคำตอบ. โตขึ้นด้วย pkunzip ใน DOS ฉันคิดว่ามันแปลกมากที่ไม่มีตัวเลือกให้เก็บไฟล์ โดยเฉพาะอย่างยิ่งกับเครื่องมืออย่าง gzip ที่ใช้กันอย่างแพร่หลาย ... แปลกประหลาด
Sen

4
FYI ฉันไม่มี gzcat จริงๆ ไม่ว่าระบบโลคัลของฉันหรือระบบที่ฉันเป็นอยู่ ดังนั้นฉันต้องใช้ gunzip -c
Sen

26
อาจเป็นเพียง zcat บนระบบของคุณ
user23307

2
ตัวเลือกเพิ่มเติมเพื่อเก็บไฟล์จะดีแน่นอน ตัวอย่างเช่น b (un) zip2 ใช้ไวยากรณ์ที่คล้ายกันและอนุญาตให้เพิ่มเพียง-kเพื่อเก็บไฟล์ต้นฉบับ
schnaader

1
คุณยังสามารถเพิ่มบรรทัดนามแฝง gzcat = "gunzip -c" ใน. bashrc ของคุณ
James Kingsbery

55

คุณสามารถใช้-cตัวเลือกของ gunzip ซึ่งจะเขียนเอาต์พุตไปยัง stdout จากนั้นไปที่ไฟล์ที่คุณเลือก:

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

รายละเอียดเพิ่มเติมเกี่ยวกับหน้าคู่มือ


โดยวิธีการโปรดทราบว่าหน้าคนที่อ้างถึงข้างต้นรายการตัวเลือก -k ซึ่งหมายถึงการเก็บไฟล์อินพุต อาจใช้งานได้กับรุ่น BSD แต่ไม่ได้อยู่ในตัวของฉันดังนั้นโซลูชัน -c น่าจะเป็นสิ่งที่ถูกต้อง

31

วิธีที่ง่ายกว่าคือการใช้ gunzip เป็นตัวกรองเช่นนี้:

gunzip < myfile.gz > myfile

ฉันคิดว่านี่เป็นวิธีที่สะอาดที่สุดเนื่องจากgunzipไม่เคยรู้ว่าไฟล์ได้รับอะไรทั้งหมดที่เห็นคือกระแสข้อมูลดังนั้นจึงไม่สามารถแก้ไขไฟล์ต้นฉบับได้
Walf

12

หากจริง ๆ แล้วมันเป็น tarball (.tgz หรือ. tar.gz ส่วนขยาย) ดังนั้นแทนที่จะเปลี่ยนเส้นทางไปยังไฟล์เช่นคำตอบทั้งหมดคุณจะต้องไปป์ที่ tar เช่น:

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

เพื่อให้คุณได้รับเนื้อหาจริง


7
หรือเพียงแค่ทำ: tar xzvf myfile.tar.gz
Joakim Elofsson

จริง แต่เฉพาะในกรณีที่คุณมี GNU tar ยกตัวอย่างเช่นตัวที่มาพร้อมกับ Solaris ไม่รองรับตัวเลือก z
Alex

5

ใช้-cตัวเลือกเพื่อคลายการบีบอัดไฟล์เพื่อ stdout มันจะไม่สัมผัสไฟล์ต้นฉบับ

gunzip -c myfile.gz > myfile

4
gzip -dk myfile.gz

หรือ

gunzip -k myfile.gz

ความคิดเห็นที่:

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.