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