Si vous souhaitez stocker tous les fichiers foldersous leur nom sans indication de répertoire, vous pouvez utiliser l' -joption.
zip -j folder/artifact.zip folder/artifact1.app folder/artifact2.ext2 folder/artifact3.ext3
ou
zip -j folder/{artifact.zip,artifact1.app,artifact2.ext2,artifact3.ext3}
Si vous avez des fichiers dans des sous-répertoires, ils n'auront pas non plus de composant de répertoire dans l'archive, par exemple folder/subdir/fooseront stockés dans l'archive sous foo.
Mais il serait probablement plus facile de passer au répertoire. C'est presque exactement la même quantité de frappe que la méthode d'accolade aboe. Si vous faites cela, si vous incluez des fichiers dans des sous-répertoires, ils auront leur chemin relatif depuis le répertoire dans lequel vous avez changé, par exemple folder/subdir/fooseront stockés sous subdir/foo.
(cd folder && zip artifact.zip artifact1.app artifact2.ext2 artifact3.ext3)
Pour une utilisation interactive, vous perdez l'achèvement du shell de cette façon, car le shell ne se rend pas compte que vous serez dans un répertoire différent lorsque vous exécuterez la zipcommande. Pour y remédier, exécutez la cdcommande séparément. Pour revenir facilement au répertoire précédent, vous pouvez utiliser pushdet popd.
pushd folder
zip artifact.zip artifact1.app artifact2.ext2 artifact3.ext3
popd
Si vous voulez un contrôle total sur les chemins stockés dans un fichier zip, vous pouvez créer une forêt de liens symboliques. Sauf indication contraire, zipne stocke pas de liens symboliques.
-js'appliquerait, ce qui compresserait tous les dossiers dans un seul répertoire racine au sein du ZIP. Ce n'est pas ce que vous cherchez, n'est-ce pas?