Jika Anda ingin menyimpan semua file folderdengan nama mereka tanpa indikasi direktori, Anda dapat menggunakan -jopsi.
zip -j folder/artifact.zip folder/artifact1.app folder/artifact2.ext2 folder/artifact3.ext3
atau
zip -j folder/{artifact.zip,artifact1.app,artifact2.ext2,artifact3.ext3}
Jika Anda memiliki file dalam subdirektori, mereka juga tidak akan memiliki komponen direktori dalam arsip, misalnya folder/subdir/fooakan disimpan dalam arsip sebagai foo.
Tetapi mungkin akan lebih mudah untuk mengubah ke direktori. Jumlah pengetikannya hampir sama dengan metode brace aboe. Jika Anda melakukannya, jika Anda memasukkan file dalam subdirektori, mereka akan memiliki jalur relatifnya dari direktori tempat Anda mengubahnya, misalnya folder/subdir/fooakan disimpan sebagai subdir/foo.
(cd folder && zip artifact.zip artifact1.app artifact2.ext2 artifact3.ext3)
Untuk penggunaan interaktif, Anda kehilangan penyelesaian shell dengan cara ini, karena shell tidak menyadari bahwa Anda akan berada di direktori yang berbeda ketika Anda menjalankan zipperintah. Untuk mengatasinya, keluarkan cdperintah secara terpisah. Untuk dengan mudah kembali ke direktori sebelumnya, Anda dapat menggunakan pushddan popd.
pushd folder
zip artifact.zip artifact1.app artifact2.ext2 artifact3.ext3
popd
Jika Anda ingin kontrol penuh atas jalur yang disimpan dalam file zip, Anda bisa membuat hutan tautan simbolik. Kecuali diinstruksikan sebaliknya, ziptidak menyimpan tautan simbolik.
-jakan berlaku, dan itu akan memampatkan semua folder menjadi direktori tingkat root tunggal dalam ZIP. Bukan itu yang Anda cari, bukan?