
Gostaria de compactar o diretório, mas excluir alguns subdiretórios. Digamos que eu tenha essa estrutura:
directory
subdirectory 1
subdirectory 2
project 1
html
directory 1
vendor
node_modules
... (other directories)
project 2
html
directory 2
vendor
node_modules
... (other directories)
Gostaria de compactar todo o diretório principal, mas gostaria de excluir caminhos como este:
subdirectory2/*/html/vendor/**
subdirectory2/*/html/node_modules/**
onde:
*
- é um diretório de um nível**
- é o diretório com quaisquer arquivos e subdiretórios
O problema é que esses project 1
são project 2
bastante dinâmicos - existem vários deles. Observe também que vendor
os diretórios (e também em teoria node_modules
) podem ser colocados em alguns outros lugares, por exemplo, então project 1/html/public/vendor
eu não gostaria de excluir apenas vendor
o subdiretório, mas apenas o subdiretório específico vendor
que está localizado exatamente em determinados diretórios de projetos HTML.
É possível fazer algo tão complexo usando apenas zip
o comando ou talvez algum script bash deva ser escrito para isso?
Estou usando MacOS se isso faz alguma diferença.
O que consegui até agora é:
cd directory && zip test-zip.zip * -r -T -x */*/html/vendor/** */*/html/node_modules/**
Parece que quase funciona, mas cria diretórios vazios de fornecedores e módulos de nós (mas não inclui seu conteúdo)
Responder1
Parece que a solução é:
cd directory &&
zip test-zip.zip * -r -T -x "*/*/html/vendor/" "*/*/html/node_modules/" "*/*/html/vendor/**" "*/*/html/node_modules/**"
então excluo tudo nestes diretórios e nesses diretórios também e também coloco tudo entre aspas para ser expandido de forma válida