Jika Anda ingin menyimpan semua file folder
dengan nama mereka tanpa indikasi direktori, Anda dapat menggunakan -j
opsi.
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/foo
akan 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/foo
akan 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 zip
perintah. Untuk mengatasinya, keluarkan cd
perintah secara terpisah. Untuk dengan mudah kembali ke direktori sebelumnya, Anda dapat menggunakan pushd
dan 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, zip
tidak menyimpan tautan simbolik.
-j
akan berlaku, dan itu akan memampatkan semua folder menjadi direktori tingkat root tunggal dalam ZIP. Bukan itu yang Anda cari, bukan?