อ่านเนื้อหาของไฟล์ซิปโดยไม่ต้องแตกไฟล์หรือไม่?


153

ฉันจะอ่านเนื้อหาของไฟล์ใดไฟล์หนึ่งในไฟล์เก็บถาวรโดยไม่แตกไฟล์. zip ที่อยู่ในไฟล์ได้อย่างไร ฉันกำลังใช้บรรทัดคำสั่ง Linux

คำถามก่อนหน้านี้ถามเกี่ยวกับการดูไดเรกทอรีของไฟล์เก็บถาวร แต่สำหรับฉันมันไม่เพียงพอที่จะเห็นรายการของไฟล์ในไฟล์เก็บถาวรฉันต้องดูเนื้อหาของไฟล์ในไฟล์เก็บถาวร



@ fixer1234 (และอื่น ๆ ): คำถามที่เชื่อมโยงถามว่า“ ฉันจะดูไฟล์ในไฟล์เก็บถาวร ZIP ได้อย่างไร?” AFAIC นั่นเป็นคำถามเดียวกันกับ“ ฉันจะดูเนื้อหาของไฟล์…ได้อย่างไร” โชคไม่ดีที่หลาย ๆ ผู้ที่ตอบคำถามนั้นตีความว่าเป็น“ ฉันจะดูไดเรกทอรีของที่เก็บถาวรได้อย่างไร” อย่างไรก็ตามคำตอบของ Gilles (โดยธรรมชาติ) และคำตอบของ Rajasekhar Tolety (เห็นได้ชัด) สำหรับคำถามนั้นให้คำตอบสำหรับคำถามนี้
สกอตต์

1
@Scott บางทีเราควรหาวิธีที่จะรวมสองคำถามเพื่อให้ครอบคลุมทั้งสองหัวข้อในหนึ่งหัวข้อหรือปรับโฟกัสอีกข้อเพื่อให้ชัดเจนเกี่ยวกับไดเรกทอรีแล้วย้ายคำตอบระหว่างสถานที่ทั้งสองเพื่อจับคู่คำถาม ตอนนี้ทั้งคู่เป็นคนยำ
fixer1234

@ fixer1234: ฉันเห็นด้วยถึงจุด ผู้ดำเนินรายการมักจะบอกเราเสมอว่าสิ่งที่ซ้ำกันนั้นเป็นสิ่งที่ดีเพราะพวกเขาให้ความสำคัญกับเครื่องมือค้นหามากขึ้น (กล่าวคือมีโอกาสมากขึ้นที่การค้นหาจะพบหนึ่งในคำถาม) แต่มีการขัดถู: หากผู้ใช้พบหนึ่งในคำถามและการเชื่อมโยงไม่ชัดเจน (และไม่มีใครดูรายการของคำถาม“ เชื่อมโยง” และ“ เกี่ยวข้อง” - อย่างน้อยก็ไม่ใช่ผู้ติดตามผลการค้นหาที่สุ่ม) ผู้ใช้พบคำตอบเพียงเล็กน้อยเท่านั้น DavidPostill ทำการโหวตครั้งสุดท้ายเพื่อเปิดคำถามนี้อีกครั้ง บางทีคุณควรพูดคุยกับเขา
สกอตต์

@Scott - เนื่องจากผู้ถามคำถามทำเครื่องหมายว่า“ ฉันจะดูไดเรกทอรีของที่เก็บถาวรได้อย่างไร” คำตอบที่ยอมรับฉันต้องคิดว่าน่าจะเป็นเจตนาของคำถาม เป็นที่น่าเสียดายที่ประโยคที่คลุมเครือเช่นนั้นอาจหมายถึงการตีความอย่างใดอย่างหนึ่ง
M. Justin

คำตอบ:


198

unzip -l archive.zip แสดงรายการเนื้อหาของไฟล์เก็บถาวร ZIP เพื่อให้แน่ใจว่าไฟล์ของคุณอยู่ภายใน

ใช้-cตัวเลือกเพื่อเขียนเนื้อหาของไฟล์ที่มีชื่อเพื่อ stdout (หน้าจอ) โดยไม่ต้องคลายการบีบอัดไฟล์เก็บถาวรทั้งหมด

unzip -c archive.zip file1.txt file2.txt | less

สำหรับการดำเนินการเช่นนี้ฉันจะส่งออกไปlessเป็นอย่างอื่นเสมอมิฉะนั้นไฟล์ทั้งหมดจะลอยขึ้นไปที่หน้าจอก่อนที่คุณจะสามารถอ่านได้

BTW zcat นั้นยอดเยี่ยมสำหรับการดูเนื้อหาของไฟล์. gz โดยไม่ต้องคลายการบีบอัดก่อน


8
อย่างน้อยใน Ubuntu มีการกำหนดค่าให้น้อยกว่านี้โดยค่าเริ่มต้น - ดังนั้นจึงless archive.zipแสดงรายการของไฟล์
aviv

1
bzcat สำหรับการดูเนื้อหาของไฟล์ bz2 โดยไม่ต้องบีบอัดพวกเขาครั้งแรก ...
จัสติน E

3
unzip -c ยังแสดงชื่อไฟล์และข้อความพิเศษบางส่วน (ส่งไปยัง stdout) ใช้ -p แทนส่งไฟล์ในรูปแบบไบนารี่เท่านั้น มีประโยชน์มากกว่าสำหรับการวางท่อ
Juan Calero

ด้วยการ$LESSOPENตั้งค่าเป็น lesspipe คุณสามารถless foo.gzดูเนื้อหาที่คลายการบีบอัดได้ (@aviv: นี่คือสิ่งเดียวที่จะช่วยให้less foo.zipท่อunzip -l foo.zipเข้าไปในตัวเอง)
Peter Cordes

unzip -c archive.zip '*' | lessทำสิ่งที่ฉันกำลังมองหา: cat เนื้อหาของไฟล์เก็บถาวร zip
Peter Cordes

4

zipinfoเป็นอีกเครื่องมือหนึ่งที่คุณอาจใช้ซึ่งมีประโยชน์ถ้าคุณอยู่ในระบบที่ถูกล็อคซึ่งunzipไม่ได้รับอนุญาต


4

หากคุณกำลังมองหาเพียงเพื่อดูภาพภายในคลังคุณสามารถใช้Comixหรือใหม่กว่าMComixเห็นภาพภายใน.zip, .rar, .cbrและ.cbzไฟล์โดยไม่ต้องแยก


2

เริ่มEmacsในบรรทัดคำสั่งและเปิดไฟล์ zip ด้วยZip-Archiveโหมด หากไม่มี Emacs / elisp จูน (ผู้ใช้ใหม่มักจะกลัว) คุณจะเห็นรายละเอียดไฟล์เช่นจากzipinfo: โหมด, ความยาว, วันที่, เวลา

จากนั้นคุณจะสามารถเปิดไฟล์ในบัฟเฟอร์และแม้แต่บันทึกการเปลี่ยนแปลงของคุณกลับสู่การเก็บถาวรด้วยทางลัดมาตรฐาน:

  • ป้อนชื่อไฟล์ในรายการเพื่อเปิด
  • แก้ไขและบันทึกด้วย Ctrl-x Ctrl-s
  • ฆ่าบัฟเฟอร์Ctrl-kเพื่อกลับไปที่บัฟเฟอร์การเก็บถาวรและดำเนินการต่อ

เมื่ออยู่ในZip-Archiveบัฟเฟอร์ใช้Ctrl-h mเพื่อให้มีทางลัดทั้งหมดในมุมมองวิธีใช้

หวังว่านี่อาจทำให้คุณค้นพบคุณสมบัติที่ยอดเยี่ยมของ Emacs



0

ฉันพบว่าless archive.zipเป็นวิธีที่ง่ายที่สุดในการทำเช่นนี้


2
archive.zip น้อยไม่แสดงเนื้อหาของไฟล์บีบอัดก็จะแสดงเฉพาะเนื้อหาของซิปเก็บ
karel

ขอบคุณสำหรับความกระจ่าง @karel
RobertMyles

ฉันคิดว่าสิ่งที่คุณพยายามทำจริงๆจะเหมือนกับคำตอบของ danielcraigie
karel

-1

หากไฟล์นั้นรวมอยู่ในไฟล์เก็บถาวร zip คุณต้องแยกไฟล์นั้นออกจากไฟล์เก็บถาวรเท่านั้น (อาจขึ้นอยู่กับประเภทไฟล์เก็บถาวรไฟล์เก็บถาวรบางไฟล์ไม่สามารถแยกไฟล์ออกจากกันได้)


ใช่ แต่คุณสามารถแตกไฟล์ไปยัง stdout และไปยัง pipe ในเพจเจอร์ได้
Peter Cordes

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