วิธีการ“ เลิกทำ” คำสั่ง unzip?


19

ฉันใช้ "unzip XXX.zip" เพื่อแยกไฟล์ zip โชคไม่ดีฉันทำผิด

ตอนนี้ฉันต้องการลบไฟล์และไดเรกทอรีทั้งหมดที่สร้างโดย "unzip"
ฉันจะยกเลิกมันได้อย่างไร

คำตอบ:


29

ใช้สิ่งนี้:

unzip -l filename |  awk 'BEGIN { OFS="" ; ORS="" } ; { for ( i=4; i<NF; i++ ) print $i " "; print $NF "\n" }' | xargs -I{} rm -v {}

ใช้สิ่งนี้หากคุณไม่เชื่อ (จะแจ้งให้ยืนยัน)

unzip -l filename |  awk 'BEGIN { OFS="" ; ORS="" } ; { for ( i=4; i<NF; i++ ) print $i " "; print $NF "\n" }' | xargs -I{} rm -iv {} 

ล้มเหลวหากไฟล์ใด ๆ ที่มีช่องว่างในชื่อของพวกเขา ... (+1 ตอนนี้มีการ-iแก้ไข :)
sarnold

ปัญหาคือในawk '{print $4}'- $4 $5 $6 ...ชื่อไฟล์ที่มีช่องว่างที่อาจจะอยู่ใน :)
sarnold

1
ตกลง. แก้ไขที่เกินไป
Abhijeet Rastogi

5
FTR จะลบไฟล์ zip ต้นฉบับด้วย
sjr

ทางของฉัน:unzip -l foo.zip | awk 'NR>3{print $NF}' | egrep -v '\--|files'|xargs rm -r
zhuguowei

5

คุณอยู่ในจุดที่หยาบ zipinfo(1)ยูทิลิตี้มาตรฐานไม่ได้ให้กลไกใด ๆ ในการทำให้ชื่อไฟล์ไม่ชัดเจนจากการเก็บถาวร แต่คุณสามารถเข้ามาใกล้:

zipinfo -1 /path/to/zip/file.zip | xargs -d '\n' rm -i

หากคุณแน่ใจว่าไม่มีไฟล์ใดที่มีบรรทัดใหม่ในไฟล์เหล่านั้นคุณสามารถลบ-iตัวเลือกไปที่rm(1)(ซึ่งจะน่าเบื่อแน่นอน)


4
unzip -Z -1 <filename.zip> | xargs -I{} rm -v {}

ทำงานได้เนื่องจาก-Zเรียกใช้zipinfoยูทิลิตี้และ-1ตัวเลือกบอกให้พิมพ์ชื่อไฟล์เท่านั้น

คุณสามารถค้นหารายละเอียดเพิ่มเติมเกี่ยวกับสิ่งนี้ผ่านman unzipและman 1 zipinfoคำสั่ง


1

หากคุณต้องการล้างข้อมูลไดเรกทอรีของคุณหลังจากการแตกไฟล์โดยไม่ตั้งใจโดยไม่ต้องสร้างโฟลเดอร์ก่อนคุณสามารถสร้างโฟลเดอร์แตกไฟล์จากนั้น:

rm -r ` ls folder `

"` "มีประโยชน์มากสำหรับคำสั่งการโยง แต่มันมีความหมายมาก

ความคิดเห็นที่ได้รับการปรับปรุงคำตอบนี้ถ้าคุณต้องการให้แน่ใจว่าคุณลบไฟล์ที่ซ่อนอยู่ด้วย (ซึ่งคุณอาจทำ) ให้ทำเช่นนี้

rm -r ` ls -A folder `

ขออภัยในการรีบไปยังไวยากรณ์ที่ไม่ถูกต้องสามารถลบการโหวตได้หรือไม่
chrispepper1989

1
หาก zip ปฏิเสธที่จะเขียนทับไฟล์ใด ๆ ไฟล์ต้นฉบับจะถูกลบ หากไฟล์ที่ซ่อนอยู่ถูกคลายซิปมันจะไม่ถูกลบออก (เว้นแต่คุณจะใช้ls -a)
gmarmstrong

1
หรือls -Aเพื่อหลีกเลี่ยงข้อผิดพลาดจากรายการ.และ..
gmarmstrong

0

ในการทำเช่นนี้ใน Nautilus (ไม่มีบรรทัดคำสั่ง) คุณสามารถนำทางไปยังตำแหน่งที่คุณแยกไฟล์โดยไม่ได้ตั้งใจจัดเรียงไฟล์โดยคลิกที่แท็บ "แก้ไข" จากนั้นเลือกและลบไฟล์ทั้งหมดที่มีเวลาที่แน่นอน รันคำสั่ง unzip


1
โปรดอ่านคำถามอีกครั้งอย่างระมัดระวัง คำตอบของคุณไม่ตอบคำถามเดิม น่าเสียดายที่ Linux ไม่มี Windows Explorer
DavidPostill

อ๊ะ! มันไม่ได้เกิดขึ้นกับฉันที่ unzip ไม่ใช่คำสั่ง windows terminal จนกระทั่งตอนนี้ ขอบคุณ! ฉันจะตรวจสอบเพื่อดูว่า Nautilus มีฟังก์ชั่นที่คล้ายกันและแก้ไขคำตอบหรือไม่ มิฉะนั้นฉันจะลบมันออก
cameronroytaylor

-1
unzip -Z -1 /path/to/zip/file.zip | xargs -I{} rm -rf {}

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