วิธีระบุไดเร็กทอรีเป้าหมายคลายซิป


21

มีตัวเลือกในคำสั่ง linux zip หรือไม่ซึ่งฉันสามารถฮาร์โค้ดไดเร็กตอรี่เป้าหมายที่คลายซิปเข้ามา. ตัวอย่างเช่นฉันต้องการ zip ./mydir ไฟล์ลงใน myzipfile.zip แต่ฉันต้องการคำสั่ง unzip เพื่อสร้างไดเรกทอรีเฉพาะ "projx" และขยายไฟล์ที่อยู่ภายใต้. / mydir

zip -r myzipfile.zip mydir (-option to expand into 'projx' when unzipped? )

คำตอบ:


18

ไม่มีตัวเลือกดังกล่าวอย่างน้อยก็ไม่มีสำหรับ Info-ZIP คุณต้องสร้างไดเรกทอรีprojxตัวเองย้าย / zipคัดลอกไฟล์ของคุณเป็นมันและแล้วผ่านไป

หากไดเรกทอรีมีอยู่แล้วเพียงแค่ส่งตัวเลือก-dไปที่unzipเพื่อระบุไดเรกทอรีเป้าหมายสำหรับการแยก


4

เมื่อต้องการทำเช่นนั้นมีวิธีอื่น คุณสามารถปัดเนื้อหาทั้งหมดของไฟล์ zip โดยใช้วิธีต่อไปนี้ ไดเรกทอรีเป้าหมายคือ " projx " และดำเนินการคำสั่งต่อไปนี้

cd /projx && unzip -j /path/to/myzipfile.zip

ตัวเลือก-jเรียกว่า "เส้นทางขยะ" และเพียงทิ้งแต่ละไฟล์ลงในไดเรกทอรีปัจจุบันแทนการแยกโครงสร้างไดเรกทอรีใด ๆ


0

ฉันไม่รู้เกี่ยวกับตัวเลือกบรรทัดคำสั่งเฉพาะ แต่คุณสามารถใช้คำสั่งต่อไปนี้เพื่อให้บรรลุเป้าหมาย:

ln -s mydir projx
zip -r myzipfile.zip projx
rm projx

คำสั่งแรกสร้างการเชื่อมโยงสัญลักษณ์เพื่อให้คุณสามารถเข้าถึงไฟล์ในยังผ่านmydir projxจากนั้นใช้Info-ZIP(ทดสอบกับรุ่น 2.31) ลิงก์สัญลักษณ์จะถูกยกเลิกการอ้างอิง (นี่คือค่าเริ่มต้นเว้นแต่คุณจะระบุ-y) และไฟล์จะถูกจัดเก็บซ้ำ:

adding: projx/ (stored 0%)
adding: projx/foo.1 (deflated 23%)
adding: projx/bar.2 (deflated 73%)
...

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

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


เส้นทางแน่นอนทำงานเฉพาะใน MacOS -jjโดยตัวเลือกระบุ ในระบบปฏิบัติการอื่น-jรองรับตัวเลือกเท่านั้น(และ-jjถูกตีความว่าเป็น-j) ซึ่งจะลบเส้นทางนำใด ๆ และนำไปสู่สิ่งที่ตรงกันข้าม (การออกแบบที่ฉลาดมาก ... )
scai
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.