วิธีแตกเฉพาะโฟลเดอร์เฉพาะจากไฟล์บีบอัดซิปไปยังไดเรกทอรีที่กำหนด?


59

หนึ่งจะแยกโฟลเดอร์ที่เฉพาะเจาะจงจากการเก็บถาวรซิปไปยังไดเรกทอรีที่กำหนดได้อย่างไร

ฉันพยายามใช้

unzip "/path/to/archive.zip" "in/archive/folder/" -d "/path/to/unzip/to"

แต่เพียงสร้างโฟลเดอร์บนเส้นทางที่ฉันต้องการให้ซิปและไม่ทำอะไรเลย

คำตอบ:


60
unzip <target-zip-file> '<folder-to-extract/*>' -d <destination-path> 

ทำงานได้ดีบน EL 6


3
EL 6 นี้คืออะไร
Zelda

2
Enterprise Linux 6 (RHEL6) - Red Hat
slm

มันก็ใช้ได้เช่นกัน โดยพื้นฐานแล้วมันเป็นคำตอบเดียวกับ Mark Adler แต่แตกต่างกันเล็กน้อย
Enkouyami

@Enkouyami ลบความแตกต่างในการอ้างอิงดูเหมือนว่าสิ่งเดียวกัน
Camilo Martin

1
@Enkouyami เนื่องจากเครื่องหมายแบ็กสแลชในเครื่องหมายคำพูดคู่หนีอักขระ (สมมุติว่าเครื่องหมายดอกจันกำลังหลบหนี แต่ฉันเดาว่ามันเป็นคำที่พิมพ์ผิด) ในขณะที่เครื่องหมายคำพูดเดี่ยวจะไม่ตีความ หากใครต้องการแบ็กสแลชที่แท้จริง"\\"จะถูกใช้ ดังนั้นจึงเป็นความแตกต่างที่ยกมาถ้าผู้เขียนหมายถึง "การอ้างถึงตัวละครกลม" (ไม่จำเป็น) ทั้งสองวิธีแบ็กสแลชเดี่ยวเช่นนั้นคือการพิมพ์ผิด
Camilo Martin

39

ลอง:

unzip /path/to/archive.zip 'in/archive/folder/*' -d /path/to/unzip/to

4
ทำเช่นนี้? ฉันได้รับcaution: filename not matched: foldername/\*เมื่อฉันทำงานunzip $repozip "$2-master/\*" -d /srv/www/magento/ที่$2มีชื่อโฟลเดอร์ในรหัสไปรษณีย์ฉันต้องการดึงไฟล์และโฟลเดอร์ทั้งหมดออกจาก
jeremy.bass

10
ทำงานโดยไม่ต้อง \ "path/*"เพียง
อเล็กซ์

8
มีวิธีการแยกเนื้อหาของ "ใน / เก็บ / โฟลเดอร์ / *" ที่ไม่รักษาเส้นทาง "ใน / เก็บ / โฟลเดอร์ /"? ฉันจะใช้mvหลังจากนั้นเพื่อรับไฟล์ที่ฉันต้องการ
jerrygarciuh

6
ใช้-jสำหรับการที่
Mark Adler

4
-jดึงข้อมูลเส้นทางทั้งหมดและไฟล์ทั้งหมดไปยังโฟลเดอร์เป้าหมาย มีวิธีลบเฉพาะส่วนทั่วไปของเส้นทางหรือไม่ -rคล้ายกับซิป
Bob Stein

6

คำตอบสองคำตอบที่มีอยู่นั้นถูกต้องทั้งคู่ แต่ก็ค่อนข้างยุ่งยากในการระบุไดเรกทอรีเป้าหมายซึ่งน่าจะดีกว่า

สมมติว่า/target/root/เป็นเป้าหมายของการดำเนินการ unzip ดั้งเดิมเช่น:

unzip -qq src.zip -d "/target/root/"

จากนั้นเราต้องใช้เหมือนกับ/target/root/dir เป้าหมายหลังจากนั้นแม้ว่าเราต้องการแยกเฉพาะไดเรกทอรีย่อยที่เฉพาะเจาะจงตามที่ unzip ทำงาน:

unzip -qq src.zip "sub/dir/*" "/target/root/"

หลังจากที่ทุกกฎง่ายจริงใช้ไดเรกทอรีรากเป้าหมายเหมือนกันสำหรับ-dตัวเลือก

BTW -qqตัวเลือกสำหรับการคลายซิปจะเงียบจริง ๆ อย่าลังเลที่จะลบออก


FYI: ฉันทำ <kbd> unzip -qq 2.3.zip "magento2-2.3 / ผู้ขาย / *" "ผู้ขาย /" </kbd> และได้รับคำเตือน <kbd>: ชื่อไฟล์ไม่ตรงกัน: ผู้ขาย / `</kbd> นี่คือการติดตั้ง Ubuntu ในทุบตี ผมไม่ค่อยเปิดเครื่องรูดอาจจะทำอย่างอื่นที่ไม่ถูกต้อง ...
คริสเค
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.