extrai apenas uma pasta específica Conteúdo de um arquivo zipado para um determinado diretório [duplicado]

1

Isso é muito próximo do SO Como extrair apenas uma pasta específica de um arquivo zipado para um determinado diretório? Eu preciso de algo próximo, mas eu sempre recebo a pasta com o conteúdo, não é conteúdo apenas Isto é o que foi sugerido:

 #note $2 is passed in and would be == "magefoler"
 unzip /srv/file.zip "$2-master/*" -d /srv/www/mage/

O que eu preciso fazer para tirar um zip que tenha essa estrutura nele

file.zip
 |-magefoler-master/
 |-magefoler-master/app/*tons of files
 |-magefoler-master/skin/*tons of files

e preciso movê-lo para outra pasta, mas não consigo mover o magefoler , só quero as pastas app e skin . Isso não significa que sempre serão essas duas pastas, apenas que qualquer conteúdo, arquivos ou pastas filho, no magefoler , é o que eu preciso sair. O que está tentando ser evitado é exportar tudo para uma pasta e depois movê-lo de lá.

O resultado final que estou procurando é do arquivo zip que eu envio para a pasta /mage assim:

/srv/www/mage/
     |--/mage/app/*tons of files
     |--/mage/skin/*tons of files
    
por jeremy.bass 18.10.2013 / 06:02

1 resposta

1

Você não pode simplesmente descompactar aqui:

$ unzip /srv/file.zip "$2-master/*" -d /srv/www/

Em seguida, mova / renomeie a pasta magefoler-master para mage :

$ mv /srv/www/magefoler-master /srv/www/mage

Alternativas?

Ao pesquisar esse problema exato no passado, só consegui encontrar dois métodos adicionais para fazer algo assim sem precisar usar o mv .

  1. Usando o FUSE como Gilles sugere aqui: Como posso forçar o unzip / zip a não criar um subdiretório ao extraí-lo?
  2. Usando a ferramenta zipnote para mover os arquivos dentro do arquivo zip, antes de extraí-los.
por 18.10.2013 / 06:23

Tags