Uma maneira melhor de extrair muitos arquivos do arquivo zip no bash

Uma maneira melhor de extrair muitos arquivos do arquivo zip no bash

Eu tenho um arquivo zip com muitos arquivos e um arquivo de texto simples com uma lista de arquivos (~ 10.000 itens), que preciso extrair desse arquivo usando o bash.

Qual a melhor forma de realizar essa operação? A maneira óbvia é executar a descompactação para cada linha do arquivo, mas parece ser muito lenta.

Responder1

Em vez de executar unzipem cada arquivo, você pode executar em toda a lista de arquivos alimentando o arquivo de texto simples como entrada:

unzip -j MyZipFile.zip <<<textfile

Responder2

Descompactar suporta especificar quais arquivos extrair:

unzip archive.zip file1.txt file2.txt file3.txt ...

Mas isso não funcionará para 10.000 itens. Você pode dividir sua lista de arquivos em pedaços de 100 e descompactá-los. Isso seria uma implementação mais rápida do que extrair cada arquivo sozinho.

Responder3

Você poderia usar xargs com a -aopção de ler seus argumentos de um arquivo. Provavelmente também use um sinalizador para limitar a quantidade de argumentos a uma quantidade apropriada para garantir que não haja muitos para o shell manipular, se houver tal limitação.

informação relacionada