Если вы хотите сохранить все файлы folderпод своим именем без указания каталога, вы можете использовать эту -jопцию.
zip -j folder/artifact.zip folder/artifact1.app folder/artifact2.ext2 folder/artifact3.ext3
или
zip -j folder/{artifact.zip,artifact1.app,artifact2.ext2,artifact3.ext3}
Если у вас есть файлы в подкаталогах, у них также не будет никакого компонента каталога в архиве, например, folder/subdir/fooони будут сохранены в архиве как foo.
Но, вероятно, было бы легче перейти в каталог. Это почти то же самое количество печатания, что и у метода скобок. Если вы сделаете это, если вы включите файлы в подкаталоги, у них будет относительный путь к каталогу, в который вы перешли, например, folder/subdir/fooони будут сохранены как subdir/foo.
(cd folder && zip artifact.zip artifact1.app artifact2.ext2 artifact3.ext3)
Для интерактивного использования вы теряете завершение оболочки таким образом, потому что оболочка не понимает, что вы будете находиться в другом каталоге при запуске zipкоманды. Чтобы исправить это, введите cdкоманду отдельно. Чтобы легко вернуться к предыдущему каталогу, вы можете использовать pushdи popd.
pushd folder
zip artifact.zip artifact1.app artifact2.ext2 artifact3.ext3
popd
Если вы хотите получить полный контроль над путями, хранящимися в zip-файле, вы можете создать лес символических ссылок. Если не указано иное, zipне хранит символические ссылки.
-jсправочных страниц кажется, что это применимо только для того , чтобы сжать все папки в один корневой каталог внутри ZIP. Это не то, что вы ищете, не так ли?