Curl

curl 使用大括號語法下載多個文件

  • May 13, 2020

我正在嘗試通過以下語法下載兩個文件:

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

問題是只有第一個文件實際保存在本地,而第二個文件只是簡單地列印到標準輸出。

我確實意識到,如果我添加-O它就可以了:

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

但是,如果文件數量太大,這不是不切實際嗎?例如,

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

我的問題是,真的沒有辦法一次下載多個單獨的文件curl(不添加正確數量的-O)嗎?

**更新:**這已在 curl 7.19.0 中實現。請參閱@Besworks 答案。

根據手冊頁,除了使用多個 O 之外,沒有辦法保留原始文件名。或者,您可以使用自己的文件名:

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

導致http://one.site.com被保存到file_one.txt並被http://two.site.com保存到file_two.txt.

甚至是多個變數,例如

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

導致http://site.host1.com被保存到site_1http://host.host1.com被保存到host_1等等。

我意識到這個問題已經有一個公認的答案,但我覺得我應該指出實際上有一種方法可以做到這一點。

--remote-name-all選項告訴 curl 表現得就像您使用-O--remote-name為每個文件一樣。

https://curl.haxx.se/docs/manpage.html#--remote-name-all

此選項從 7.19.0 版本開始可用

https://curl.haxx.se/changes.html#7_19_0

引用自:https://unix.stackexchange.com/questions/243134