Tüm dosyaları folderbir dizin göstergesi olmadan adlarının altında saklamak istiyorsanız , -jseç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/fooolmayacaktı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/fooolarak 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 zipkomutu çalıştırdığınızda farklı bir dizinde olacağınızı fark etmez . Bunu düzeltmek için cdkomutu ayrı olarak verin. Kolayca önceki dizine geri gitmek için, kullanabilir pushdve 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 zipsembolik bağlantılar saklamaz.
-jgeç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?