Descompacte o conteúdo do arquivo, mas sem criar pasta de arquivamento

29

Eu tenho um arquivo myarchive.zip que contém muitos diretórios, arquivos, etc. Digamos que esse arquivo myarchive.zip esteja em um diretório chamado "b". Bem, quando eu uso o comando "unzip myarchive.zip", o sistema cria um diretório por padrão chamado "myarchive" com o conteúdo do arquivo zip. Eu faço não quero que o sistema crie esse diretório "myarchive" - eu só quero que o conteúdo seja extraído para o diretório "b". Isso é possível?

O que eu tenho feito agora é simplesmente emitir um comando "cp" para copiar os arquivos do diretório recém-criado (neste caso "myarchive" para "b") para onde eu quiser.

    
por ScoobaSteve 18.04.2013 / 04:09

3 respostas

35

Minha versão de unzip tem uma opção -j para não criar nenhum diretório.

Então

unzip -j /path/to/file.zip

Extrairá todos os arquivos no diretório atual sem restaurar a estrutura de diretórios armazenada no arquivo zip .

Se você quiser remover apenas um nível de diretórios do arquivamento, (extrair myarchive/dir/file como dir/file , não file ), poderá usar bsdtar (que suporta arquivos zip além de tar files) e sua opção -s .

bsdtar -xf /path/to/file.zip -s'|[^/]*/||'
    
por 18.04.2013 / 12:29
-1

Se a execução de unzip myarchive.zip produzir um diretório myarchive com tudo nele, significa que o criador do arquivo zip realmente executou o zip nesse diretório.

A única maneira de criar o que você deseja é mover todo o conteúdo para fora do diretório depois de executar unzip :

[user@host]:some/path/b$ unzip myarchive.zip

[user@host]:some/path/b$ ls { mostra o diretório myarchive }

[user@host]:some/path/b$ mv myarchive/* .

[user@host]:some/path/b$ rm -R myarchive

[user@host]:some/path/b$ ls { mostra o primeiro nível do myarchive (diretamente em b ) }

    
por 19.07.2017 / 19:53
-1

O que a resposta aceita não especifica como fazer, como você diz na pergunta, se você ainda deseja extrair para uma pasta específica sem usar os caminhos de pastas armazenados nos arquivos zip, você pode usar o -j opção com a opção -d desta forma:

unzip -j /path/to/file.zip -d other_folder

ou para o seu caso

unzip -j myarchive.zip -d b
    
por 19.03.2018 / 22:57

Tags