Eu tenho uma pasta que contém vários arquivos
pasta
- artifact1.app
- artifact2.ext2
- artifact3.ext3
- ...
Meu objetivo é compactar o arquivo fora desta pasta (sem usar o cd
comando) sem incluir o diretório da pasta.
zip -r ./folder/artifact.zip ./folder/artifact1.app
Este comando inclui a pasta dir no zip final. Alguma dica?
Pergunta relacionada: Compacte o conteúdo de uma pasta sem incluir a própria pasta
-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, é?Respostas:
Se você deseja armazenar todos os arquivos em
folder
seu nome sem uma indicação de diretório, pode usar a-j
opçãoou
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 comofoo
.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 comosubdir/foo
.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 ocd
comando separadamente. Para voltar facilmente ao diretório anterior, você pode usarpushd
epopd
.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.fonte
folder
), você pode apenas usar um curinga, ou seja,zip -j folder/*
.profile
) não serão incluídos no arquivo morto . Em vez disso, altere o diretório de trabalho atual e especifique.
como o arquivo a ser arquivado:cd folder && zip -r ../folder.zip .