Se você quiser armazenar todos os arquivos em folder
sob seu nome sem uma indicação de diretório, você pode usar a opção -j
.
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}
Se você tiver arquivos em subdiretórios, eles não terão nenhum componente de diretório no arquivo morto, por exemplo, folder/subdir/foo
será armazenado no arquivo como foo
.
Mas provavelmente seria mais fácil mudar para o diretório. É quase exatamente a mesma quantidade de digitação que o método de chave. Se você fizer isso, se incluir arquivos em subdiretórios, eles terão seu caminho relativo do diretório em que você mudou, por exemplo, folder/subdir/foo
será armazenado como subdir/foo
.
(cd folder && zip artifact.zip artifact1.app artifact2.ext2 artifact3.ext3)
Para uso interativo, você perde a conclusão do shell dessa maneira, porque o shell não percebe que você estará em um diretório diferente quando executar o comando zip
. Para remediar isso, emita o comando cd
separadamente. Para voltar facilmente ao diretório anterior, você pode usar pushd
e popd
.
pushd folder
zip artifact.zip artifact1.app artifact2.ext2 artifact3.ext3
popd
Se você quiser controle total sobre os caminhos armazenados em um arquivo zip, poderá criar uma floresta de links simbólicos. A menos que seja instruído de outra forma, zip
não armazena links simbólicos.