Si vous souhaitez stocker tous les fichiers folder
sous leur nom sans indication de répertoire, vous pouvez utiliser l' -j
option.
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/foo
seront 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/foo
seront 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 zip
commande. Pour y remédier, exécutez la cd
commande séparément. Pour revenir facilement au répertoire précédent, vous pouvez utiliser pushd
et 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, zip
ne stocke pas de liens symboliques.
-j
s'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?