Eu tenho um arquivo ZIP no qual existe um diretório superior onde todos os arquivos estão armazenados:
Release/
Release/file
Release/subdirectory/file
Release/subdirectory/file2
Release/subdirectory/file3
Quero extrair tudo Release
, preservando a estrutura de diretórios, mas quando executo isso:
unzip archive.zip Release/* -d /tmp
Ele cria a Release
pasta superior :
/tmp/Release/
/tmp/Release/file
/tmp/Release/subdirectory/file
/tmp/Release/subdirectory/file2
/tmp/Release/subdirectory/file3
Como posso extrair tudo dentro Release
sem criar uma Release
pasta, assim:
/tmp/
/tmp/file
/tmp/subdirectory/file
/tmp/subdirectory/file2
/tmp/subdirectory/file3
command-line
unzip
Moisés
fonte
fonte
unzip archive.zip && mv Release/* .
Release
pastaRespostas:
No seu caso, tente na pasta de destino:
Do que você precisa remover o link que você criou:
fonte
O
j
sinalizador deve impedir a criação da pastaunzip -j archive.zip -d .
Na página do manual :
fonte
-j
opção despeja todos os arquivos no diretório atual, independentemente da estrutura de diretórios no arquivo morto.Script Python para achatar a árvore extraída
O script escrito abaixo extrai o arquivo zip e move os arquivos contidos no diretório mais alto para o diretório de trabalho atual. Esse script rápido é adaptado para atender a essa pergunta em particular, onde há um único diretório superior que contém todos os arquivos, embora algumas edições possam ser adequadas para casos mais gerais.
Execução de teste
Aqui está um exemplo de como o script deve funcionar. Tudo extraído para o diretório de trabalho atual, mas o arquivo de origem pode estar no diretório diferente. O teste é realizado no arquivo zip do meu repositório pessoal do github.
Teste com o arquivo de origem em local diferente
fonte