Como saber o caminho para um arquivo específico em um arquivo zip, sem extraí-lo?

2

Eu só sei o nome do arquivo, mas não a sua localização exata. Eu gostaria de extrair apenas esse arquivo do arquivo. E preciso saber sua localização no arquivo.

    
por aneuryzm 03.04.2014 / 12:39

3 respostas

3

unzip aceita curingas e globs. Se você conhece o nome do arquivo, pode simplesmente dizer:

unzip archive.zip "**/file_to_extract"

para extrair o arquivo.

    
por 03.04.2014 / 12:46
1

Como síntese de comentários e respostas, você pode proceder assim:

unzip -l archive.zip | grep "nameOfile"
./tmp/nameOffileponey
./ham/smoked/nameOfile
#identify the path of the file precisely in your archive if filtering gives you several result and then use 
 unzip archive.zip ./ham/smoked/nameOfile

Isso deve funcionar

    
por 03.04.2014 / 12:53
0

Monte o arquivo zip como um sistema de arquivos com fuse-zip . Então você pode acessar arquivos usando qualquer comando que você goste.

mkdir foo
fuse-zip foo.zip foo

Em seguida, copie needle.txt do subdiretório em que estiver:

find foo -name needle.txt -exec cp -p {} . \;

Ou usando a globalização recursiva do shell (no bash, você precisa executar shopt -s globstar primeiro; no zsh isso funciona imediatamente):

cp -p foo/**/needle.txt .

Desmonte o sistema de arquivos quando terminar de usá-lo.

fusermount -u foo
    
por 04.04.2014 / 02:25

Tags