หากคุณต้องการจัดเก็บไฟล์ทั้งหมดในfolder
ชื่อโดยไม่มีการระบุไดเรกทอรีคุณสามารถใช้-j
ตัวเลือก
zip -j folder/artifact.zip folder/artifact1.app folder/artifact2.ext2 folder/artifact3.ext3
หรือ
zip -j folder/{artifact.zip,artifact1.app,artifact2.ext2,artifact3.ext3}
หากคุณมีไฟล์ในไดเรกทอรีย่อยพวกเขาจะไม่ได้มีองค์ประกอบไดเรกทอรีใด ๆ ในการเก็บอย่างใดอย่างหนึ่งเช่นจะถูกเก็บไว้ในที่เก็บถาวรเป็นfolder/subdir/foo
foo
แต่มันอาจจะง่ายกว่าที่จะเปลี่ยนเป็นไดเรกทอรี มันเกือบจะเท่ากับจำนวนการพิมพ์ที่เหมือนกันกับวิธีวงเล็บปีกกา ถ้าคุณทำเช่นว่าถ้าคุณรวมถึงไฟล์ในไดเรกทอรีย่อยพวกเขาจะมีทางญาติของพวกเขาจากไดเรกทอรีที่คุณเปลี่ยนไปเช่นจะถูกเก็บไว้เป็นfolder/subdir/foo
subdir/foo
(cd folder && zip artifact.zip artifact1.app artifact2.ext2 artifact3.ext3)
สำหรับการใช้แบบอินเตอร์แอคทีฟคุณจะสูญเสียความสมบูรณ์ของเชลล์ด้วยวิธีนี้เนื่องจากเชลล์ไม่ทราบว่าคุณจะอยู่ในไดเรกทอรีอื่นเมื่อคุณเรียกใช้zip
คำสั่ง ในการแก้ไขนั้นให้ออกcd
คำสั่งแยกต่างหาก เพื่อให้ง่ายต่อกลับไปยังไดเรกทอรีก่อนหน้านี้คุณสามารถใช้และpushd
popd
pushd folder
zip artifact.zip artifact1.app artifact2.ext2 artifact3.ext3
popd
หากคุณต้องการควบคุมเส้นทางทั้งหมดที่เก็บไว้ในไฟล์ zip คุณสามารถสร้างฟอเรสต์ของลิงก์สัญลักษณ์ เว้นแต่จะได้รับคำแนะนำเป็นอย่างอื่นzip
จะไม่จัดเก็บลิงก์สัญลักษณ์
-j
จะนำมาใช้เพียงอย่างเดียวเท่านั้นและนั่นบีบอัดโฟลเดอร์ทั้งหมดลงในไดเรกทอรีระดับรากเดียวภายใน ZIP นั่นไม่ใช่สิ่งที่คุณกำลังมองหาใช่ไหม?