descompacte como cortar os principais diretórios

13

Eu tenho um arquivo zip. O unzip -l myarchive.zipcomando fornece esta listagem:

top/subtop/files/1.txt
top/subtop/files2/2.txt
etc

As pastas raiz são top / subtop para todos os arquivos. Como extrair esses arquivos sem as duas pastas top / subtop?

Por exemplo, quando estou no diretório / home / myuser / public_html, files/1.txte files2/2.txtdevo ser extraído diretamente para esse diretório.

Eu tentei, unzip myarchive.zip top/subtop/*mas ele criou diretórios top / subtop de qualquer maneira.

camcam
fonte

Respostas:

8

Infelizmente você não pode. Sua única opção real é apenas movê-los após serem extraídos.

Sepero
fonte
Hum, bom saber. Perguntei isso porque, há alguns dias, ao criar um arquivo, ele adicionava alguns caminhos de cima, sem querer. Portanto, houve um problema ao descompactá-los devido aos caminhos principais adicionais. No entanto, não posso repetir isso hoje - hoje está funcionando bem, ou seja, quando no diretório top / subtop e executando zip -r files.zip *, ele não adiciona o caminho top / subtop como prefixo ao caminho dos arquivos. Acho que faço exatamente o mesmo comando, mas, estranhamente, os resultados são diferentes, portanto, não é necessário remover os diretórios principais ao descompactar.
camcam 05/07/12
Note que é possível ignorar todos os diretórios (simplesmente colocando todos os arquivos um ao lado do outro) com unzip -j.
Skylar Ittner
4

Você pode tentar o tarcomando, que possui um --strip-componentsrecurso e pode operar em arquivos zip.

Eamon
fonte
2
Não funciona com tar (GNU tar) 1.15.1:tar: This does not look like a tar archive tar: Error exit delayed from previous errors
Kevin Panko
2
O tar do FreeBSD pode lidar com arquivos ZIP. Outras implementações de alcatrão não são tão completas, infelizmente.
Mikhail T.
1
Para usuários debian, o tar do FreeBSD está disponível como bsdtar (apt-get install bsdtar) se você quiser usar o tar para extrair arquivos zip.
Niklas B
-2
$ unzip -l myarchive.zip
$ mv top/subtop/* .

#kissPrinciple;)

Romain DEQUIDT
fonte