Якщо ви хочете зберегти всі файли 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не зберігається символічні посилання.
-jдовідкових сторінок здається, що застосовується лише те , що стискає всі папки в єдиний каталог кореневого рівня в ZIP. Це не те, що ви шукаєте, чи не так?