ฉันใช้ "unzip XXX.zip" เพื่อแยกไฟล์ zip โชคไม่ดีฉันทำผิด
ตอนนี้ฉันต้องการลบไฟล์และไดเรกทอรีทั้งหมดที่สร้างโดย "unzip"
ฉันจะยกเลิกมันได้อย่างไร
ฉันใช้ "unzip XXX.zip" เพื่อแยกไฟล์ zip โชคไม่ดีฉันทำผิด
ตอนนี้ฉันต้องการลบไฟล์และไดเรกทอรีทั้งหมดที่สร้างโดย "unzip"
ฉันจะยกเลิกมันได้อย่างไร
คำตอบ:
ใช้สิ่งนี้:
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 {}
awk '{print $4}'
- $4 $5 $6 ...
ชื่อไฟล์ที่มีช่องว่างที่อาจจะอยู่ใน :)
unzip -l foo.zip | awk 'NR>3{print $NF}' | egrep -v '\--|files'|xargs rm -r
คุณอยู่ในจุดที่หยาบ zipinfo(1)
ยูทิลิตี้มาตรฐานไม่ได้ให้กลไกใด ๆ ในการทำให้ชื่อไฟล์ไม่ชัดเจนจากการเก็บถาวร แต่คุณสามารถเข้ามาใกล้:
zipinfo -1 /path/to/zip/file.zip | xargs -d '\n' rm -i
หากคุณแน่ใจว่าไม่มีไฟล์ใดที่มีบรรทัดใหม่ในไฟล์เหล่านั้นคุณสามารถลบ-i
ตัวเลือกไปที่rm(1)
(ซึ่งจะน่าเบื่อแน่นอน)
unzip -Z -1 <filename.zip> | xargs -I{} rm -v {}
ทำงานได้เนื่องจาก-Z
เรียกใช้zipinfo
ยูทิลิตี้และ-1
ตัวเลือกบอกให้พิมพ์ชื่อไฟล์เท่านั้น
คุณสามารถค้นหารายละเอียดเพิ่มเติมเกี่ยวกับสิ่งนี้ผ่านman unzip
และman 1 zipinfo
คำสั่ง
หากคุณต้องการล้างข้อมูลไดเรกทอรีของคุณหลังจากการแตกไฟล์โดยไม่ตั้งใจโดยไม่ต้องสร้างโฟลเดอร์ก่อนคุณสามารถสร้างโฟลเดอร์แตกไฟล์จากนั้น:
rm -r ` ls folder `
"` "มีประโยชน์มากสำหรับคำสั่งการโยง แต่มันมีความหมายมาก
ความคิดเห็นที่ได้รับการปรับปรุงคำตอบนี้ถ้าคุณต้องการให้แน่ใจว่าคุณลบไฟล์ที่ซ่อนอยู่ด้วย (ซึ่งคุณอาจทำ) ให้ทำเช่นนี้
rm -r ` ls -A folder `
ls -a
)
ls -A
เพื่อหลีกเลี่ยงข้อผิดพลาดจากรายการ.
และ..
ในการทำเช่นนี้ใน Nautilus (ไม่มีบรรทัดคำสั่ง) คุณสามารถนำทางไปยังตำแหน่งที่คุณแยกไฟล์โดยไม่ได้ตั้งใจจัดเรียงไฟล์โดยคลิกที่แท็บ "แก้ไข" จากนั้นเลือกและลบไฟล์ทั้งหมดที่มีเวลาที่แน่นอน รันคำสั่ง unzip
unzip -Z -1 /path/to/zip/file.zip | xargs -I{} rm -rf {}
-i
แก้ไข :)