J'essaie de télécharger deux fichiers par la syntaxe suivante:
curl -O http://domain/path/to/{file1,file2}
Le problème est que seul le premier fichier est réellement enregistré localement, et le second a été simplement imprimé sur stdout.
Je me suis rendu compte que si j'ajoute un -O
ça marche très bien:
curl -OO http://domain/path/to/{file1,file2}
Mais n'est-ce pas impossible si le nombre de fichiers augmente trop? Par exemple,
curl -O http://domain/path/to/file[1,100]
Ma question est, est-il vraiment impossible de télécharger plusieurs fichiers individuels à la fois avec curl
(sans en ajouter un nombre correct -O
)?
curl
y arriver. (2) Je ne considère pas seulement les protocoles HTTP, FTP, par exemple SFTP.curl
échoue-t-il à cette fonctionnalité pas si difficile?{}
and[]
(et aussi*
and?
) est la globalisation / expansion du shell ,curl
ne les voit jamais, c'est la même chose quecurl url1 url2
Réponses:
Mise à jour: cela a été implémenté dans curl 7.19.0. Voir la réponse @Besworks.
Selon la page de manuel, il n'y a aucun moyen de conserver le nom de fichier d'origine sauf en utilisant plusieurs O´s. Vous pouvez également utiliser vos propres noms de fichiers:
résultant en
http://one.site.com
étant enregistréfile_one.txt
ethttp://two.site.com
enregistré dansfile_two.txt
.ou même plusieurs variables comme
résultant en
http://site.host1.com
être enregistré sursite_1
,http://host.host1.com
être enregistré surhost_1
et ainsi de suite.la source
curl -$(printf 'O%.0s' {1..3}) http://domain/path/to/{file1,file2,file3}
Je me rends compte qu'il existe déjà une réponse acceptée à cette question, mais je pense que je dois souligner qu'il existe en fait un moyen de le faire.
L'
--remote-name-all
option indique à curl de se comporter comme si vous utilisiez-O
ou--remote-name
pour chaque fichier.https://curl.haxx.se/docs/manpage.html#--remote-name-all
Cette option est disponible depuis la version 7.19.0
https://curl.haxx.se/changes.html#7_19_0
la source
Il existe une autre façon de télécharger plusieurs fichiers avec curl:
Remarque : l'espace obligatoire est utilisé pour délimiter différentes URL.
la source