Extrai seletivamente arquivos de um arquivo .zip da linha de comando

1

Suponha que eu tenha um arquivo zip grande (> 50 GB) e quero extrair alguns arquivos dele na linha de comando.

Para obter os arquivos, eu corro o comando:

unzip -l myfile.zip | grep "foo"

que me dá uma lista de entradas de zip; Como faço para extrair os arquivos que passam pelo filtro do grep? Eu tentei usar xargs unzip -j , mas gostaria de uma solução mais limpa, pois as entradas de zip exigem a limpeza de informações inúteis.

    
por Warrior 28.07.2017 / 17:11

1 resposta

1

Stéphane tem a ideia certa para passar zip do curinga correspondente aos nomes de arquivo que você gostaria de extrair. Analisar a saída de unzip significa que você deve estar atento às linhas de cabeçalho e trailer que aparecem.

Use algo como:

unzip -j myfile.zip '*foo*'

tomando cuidado para citar os curingas do shell .

Se você continuar na direção da saída de unzip do grepping, retire o cabeçalho e o trailer e reduza-o à coluna do nome do arquivo:

unzip -l myfile.zip | sed '1,3d; /---------                     -------/d; $d'|cut -c31-
    
por 28.07.2017 / 18:39