curl baixe vários arquivos com a sintaxe de chave

11

Estou tentando fazer o download de dois arquivos pela seguinte sintaxe:

curl -O http://domain/path/to/{file1,file2}

O problema é que apenas o primeiro arquivo é salvo localmente e o segundo é simplesmente impresso no stdout.

Eu percebi que, se eu adicionar um -O , ele funcionará bem:

curl -OO http://domain/path/to/{file1,file2}

Mas isso não é prático se o número de arquivos ficar muito grande? Por exemplo,

curl -O http://domain/path/to/file[1,100]

Minha pergunta é: realmente não há como fazer o download de vários arquivos individuais de uma só vez com curl (sem adicionar um número correto de -O )?

    
por Naitree 15.11.2015 / 13:10

2 respostas

4

Atualização: Isso foi implementado no curl 7.19.0. Veja a resposta do @Besworks.

De acordo com a página man, não há como manter o nome do arquivo original, exceto o uso de múltiplos O's. Como alternativa, você pode usar seus próprios nomes de arquivo:

curl http://{one,two}.site.com -o "file_#1.txt"

resultando em http://one.site.com sendo salvo em file_one.txt e http://two.site.com sendo salvo em file_two.txt .

ou até várias variáveis, como

curl http://{site,host}.host[1-5].com -o "#1_#2"

resultando em http://site.host1.com sendo salvo em site_1 , http://host.host1.com sendo salvo em host_1 e assim por diante.

    
por 15.11.2015 / 14:24
15

Eu percebo que já existe uma resposta aceita para esta pergunta, mas eu sinto que devo salientar que há realmente uma maneira de fazer isso.

A opção --remote-name-all diz ao curl para se comportar como se você usasse -O ou --remote-name para cada arquivo.

link

Esta opção está disponível desde a versão 7.19.0

link

    
por 25.02.2016 / 19:21

Tags