Jeśli chcesz przechowywać wszystkie pliki folderpod ich nazwami bez wskazania katalogu, możesz skorzystać z tej -jopcji.
zip -j folder/artifact.zip folder/artifact1.app folder/artifact2.ext2 folder/artifact3.ext3
lub
zip -j folder/{artifact.zip,artifact1.app,artifact2.ext2,artifact3.ext3}
Jeśli masz pliki w podkatalogach, nie będą one również zawierać żadnego elementu katalogu w archiwum, np. folder/subdir/fooBędą przechowywane w archiwum jako foo.
Ale prawdopodobnie łatwiej byłoby przejść do katalogu. To prawie dokładnie tyle samo pisania co metoda klamry. Jeśli to zrobisz, jeśli dodasz pliki do podkatalogów, będą one miały swoją ścieżkę względną z katalogu, w którym się zmieniłeś, np. folder/subdir/fooZostaną zapisane jako subdir/foo.
(cd folder && zip artifact.zip artifact1.app artifact2.ext2 artifact3.ext3)
Do użytku interaktywnego tracisz w ten sposób ukończenie powłoki, ponieważ powłoka nie zdaje sobie sprawy, że po uruchomieniu zippolecenia będziesz w innym katalogu . Aby temu zaradzić, wydaj cdpolecenie osobno. Aby łatwo wrócić do poprzedniego katalogu, możesz użyć pushdi popd.
pushd folder
zip artifact.zip artifact1.app artifact2.ext2 artifact3.ext3
popd
Jeśli chcesz mieć pełną kontrolę nad ścieżkami przechowywanymi w pliku zip, możesz utworzyć las dowiązań symbolicznych. O ile nie podano inaczej, zipnie przechowuje dowiązań symbolicznych.
-jmiałoby to zastosowanie tylko i to skompresowałoby wszystkie foldery do jednego katalogu na poziomie głównym w ZIP. Nie tego szukasz, prawda?