Saya memiliki folder yang berisi banyak file
map
- artifact1.app
- artifact2.ext2
- artifact3.ext3
- ...
Tujuan saya adalah untuk zip file dari luar folder ini (tanpa menggunakan cd
perintah) tanpa menyertakan direktori dir.
zip -r ./folder/artifact.zip ./folder/artifact1.app
Perintah ini termasuk folder dir di zip terakhir. Ada petunjuk?
Pertanyaan terkait: Zip isi folder tanpa menyertakan folder itu sendiri
-j
akan berlaku, dan itu akan memampatkan semua folder menjadi direktori tingkat root tunggal dalam ZIP. Bukan itu yang Anda cari, bukan?Jawaban:
Jika Anda ingin menyimpan semua file
folder
dengan nama mereka tanpa indikasi direktori, Anda dapat menggunakan-j
opsi.atau
Jika Anda memiliki file dalam subdirektori, mereka juga tidak akan memiliki komponen direktori dalam arsip, misalnya
folder/subdir/foo
akan disimpan dalam arsip sebagaifoo
.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 sebagaisubdir/foo
.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, keluarkancd
perintah secara terpisah. Untuk dengan mudah kembali ke direktori sebelumnya, Anda dapat menggunakanpushd
danpopd
.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.sumber
folder
), Anda cukup menggunakan wildcard, yaituzip -j folder/*
.profile
) Tidak akan dimasukkan dalam arsip. Alih-alih, ubah direktori kerja saat ini dan tentukan.
sebagai file yang akan diarsipkan:cd folder && zip -r ../folder.zip .