Ich versuche, zwei Dateien mit der folgenden Syntax herunterzuladen:
curl -O http://domain/path/to/{file1,file2}
Das Problem ist, dass nur die erste Datei lokal gespeichert wird und die zweite einfach auf stdout gedruckt wurde.
Ich habe festgestellt, dass -O
es gut funktioniert , wenn ich ein hinzufüge :
curl -OO http://domain/path/to/{file1,file2}
Aber ist das nicht unpraktisch, wenn die Anzahl der Dateien zu groß wird? Beispielsweise,
curl -O http://domain/path/to/file[1,100]
Meine Frage ist, gibt es wirklich keine Möglichkeit, mehrere einzelne Dateien gleichzeitig mit herunterzuladen curl
(ohne eine korrekte Anzahl von -O
)?
curl
es schaffen kann. (2) Ich berücksichtige nicht nur HTTP (s), FTP-Protokolle, z. B. SFTP.curl
scheitert es einfach an dieser nicht so harten Funktionalität?{}
und[]
(und auch*
und?
) Shell- Globbing /curl
curl url1 url2
Antworten:
Update: Dies wurde in curl 7.19.0 implementiert. Siehe @Besworks Antwort.
Laut der Manpage gibt es keine Möglichkeit, den ursprünglichen Dateinamen beizubehalten, außer wenn mehrere O's verwendet werden. Alternativ können Sie auch eigene Dateinamen verwenden:
was dazu führt,
http://one.site.com
dass gespeichertfile_one.txt
undhttp://two.site.com
gespeichert wirdfile_two.txt
.oder auch mehrere Variablen mögen
was dazu führt,
http://site.host1.com
dass gespeichert wird insite_1
,http://host.host1.com
gespeichert wird inhost_1
und so weiter.quelle
curl -$(printf 'O%.0s' {1..3}) http://domain/path/to/{file1,file2,file3}
Mir ist klar, dass es bereits eine akzeptierte Antwort auf diese Frage gibt, aber ich sollte darauf hinweisen, dass es tatsächlich einen Weg gibt, dies zu tun.
Die
--remote-name-all
Option weist curl an, sich so zu verhalten, als ob Sie-O
oder--remote-name
für jede Datei verwendet hätten.https://curl.haxx.se/docs/manpage.html#--remote-name-all
Diese Option ist seit Version 7.19.0 verfügbar
https://curl.haxx.se/changes.html#7_19_0
quelle
Es gibt eine alternative Möglichkeit, mehrere Dateien mit curl herunterzuladen:
Hinweis : Das obligatorische Leerzeichen dient zum Abgrenzen verschiedener URLs.
quelle