Se você deseja armazenar todos os arquivos em folder
seu nome sem uma indicação de diretório, pode usar a -j
opção
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 também não terão nenhum componente de diretório no arquivo morto, por exemplo folder/subdir/foo
, serão armazenados no arquivo morto 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 brace aboe. Se você fizer isso, se incluir arquivos em subdiretórios, eles terão o caminho relativo do diretório em que você mudou, por exemplo folder/subdir/foo
, serão armazenados 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 estará em um diretório diferente quando executar o zip
comando. Para remediar isso, emita o cd
comando 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 ter controle total sobre os caminhos armazenados em um arquivo zip, poderá criar uma floresta de links simbólicos. Salvo indicação em contrário, zip
não armazena links simbólicos.
-j
se aplicaria e isso compactaria todas as pastas em um único diretório no nível raiz dentro do ZIP. Não é isso que você está procurando, é?