บีบอัดเนื้อหาของโฟลเดอร์โดยไม่รวมโฟลเดอร์ด้วยตนเอง


77

ฉันมีไดเรกทอรีfolderที่มีลักษณะเช่นนี้:

folder
      -> root_folder
                    -> some files

ฉันต้องการซิปไดเรกทอรีนี้ลงไปzipped_dirฉันลอง:

zip -r zipped_dir.zip folder/*

แต่นี่จะสร้าง ZIP ที่มีลักษณะดังนี้:

zipped_dir
          -> folder
                   -> root_folder
                                 -> some files

กล่าวอีกนัยหนึ่งคือมันรวมถึงไดเรกทอรีที่มีเนื้อหาที่ฉันต้องการซิป ฉันจะแยกไดเรกทอรีหลักนี้ออกจาก ZIP โดยไม่ย้ายอะไรได้อย่างไร

IE ฉันต้องการผลลัพธ์สุดท้าย:

zipped_dir
          -> root_folder
                        -> some files

คำตอบ:


75

ลองใช้คำสั่งนี้ (คุณจะได้ความคิด)

cd folder; zip -r ../zipped_dir.zip *

อาจจะมีวิธีอื่น แต่วิธีนี้เร็วและง่ายที่สุดสำหรับฉัน :)


2
มันทำงานได้อย่างสมบูรณ์แบบในการหลอกลวง หมายเหตุ: chroot ระบบจะทำ
loretoparisi

เทียบเท่า:zip -r zipped_dir.zip folder/*
Tobias Kolb

5
@TobiasKolb บางทีคุณไม่ได้อ่านคำถาม OP ไม่ต้องการให้มีโฟลเดอร์ในเส้นทางที่เก็บไว้ใน zip
Romeo Ninov

2
ดูเหมือนหนทางเดียวที่จะทำได้
Robert

1
@PabloDiaz ในตัวอย่างของฉันcd -จะทำงาน (คำสั่งเดียวเท่านั้น) :) หรือcd ..
Romeo Ninov

30

ใช้-j; ตัวอย่างเช่น:zip -r -j zipped_dir.zip folder/*

มันจะไม่ซิป 'root_folder'


7
ฉันได้รับข้อผิดพลาดหากฉันมีชื่อเดียวกันสองไฟล์
Chris

11
OP อาจต้องการเฉพาะไดเรกทอรีหลักที่ถูกลบไม่ใช่ทั้งหมด
tokland

ยังคงสร้างไดเรกทอรีzip -r -j package.zip ./dist/static/*ทำให้โครงสร้างการเก็บถาวรdist/static/myfiels
deathangel908

4
มันเรียบไฟล์ไดเรกทอรีเด็กเช่นกัน
Sumit Ramteke

3
-jตัวเลือกกำจัดข้อมูลไดเรกทอรีทั้งหมดและมีเพียงบันทึกไฟล์ นั่นคือการจัดเก็บไฟล์ทั้งหมดภายใต้ไดเรกทอรีเดียวในทาง "แบน"
Robert


0

นี่คือสิ่งที่ได้ผลสำหรับฉัน:

7z a zipped.zip ./rootDir/*

มันจะสร้างzipเก็บกับราก: ไฟล์ใด ๆ / rootDirไดเรกทอรีภายใน

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