Tüm dosyaları folder
bir dizin göstergesi olmadan adlarının altında saklamak istiyorsanız , -j
seçeneği kullanabilirsiniz .
zip -j folder/artifact.zip folder/artifact1.app folder/artifact2.ext2 folder/artifact3.ext3
veya
zip -j folder/{artifact.zip,artifact1.app,artifact2.ext2,artifact3.ext3}
Alt dizinlerde dosyalarınız varsa, arşivde de herhangi bir dizin bileşeni folder/subdir/foo
olmayacaktır , örneğin arşivde olarak depolanacaktır foo
.
Ancak dizine geçmek muhtemelen daha kolay olurdu. Bu hemen hemen brace yöntemi ile yazarak aynı miktarda. Bunu yaparsanız, alt dizinlere dosya eklerseniz, değiştirdiğiniz dizinden göreceli yollarına sahip olurlar, örneğin folder/subdir/foo
olarak depolanır subdir/foo
.
(cd folder && zip artifact.zip artifact1.app artifact2.ext2 artifact3.ext3)
Etkileşimli kullanım için, kabuk tamamlama işlemini bu şekilde kaybedersiniz, çünkü kabuk zip
komutu çalıştırdığınızda farklı bir dizinde olacağınızı fark etmez . Bunu düzeltmek için cd
komutu ayrı olarak verin. Kolayca önceki dizine geri gitmek için, kullanabilir pushd
ve popd
.
pushd folder
zip artifact.zip artifact1.app artifact2.ext2 artifact3.ext3
popd
Bir zip dosyasında depolanan yollar üzerinde tam kontrol istiyorsanız, sembolik bağlantılardan oluşan bir orman oluşturabilirsiniz. Aksi belirtilmedikçe zip
sembolik bağlantılar saklamaz.
-j
geçerli olacak gibi görünüyor ve bu, tüm klasörleri ZIP içindeki tek bir kök düzeyinde dizine sıkıştırır. Aradığın şey bu değil mi?