使用 curl 下载多个文件,curl 在下载时重复地址

使用 curl 下载多个文件,curl 在下载时重复地址

我正在运行命令

curl -O "http://www.*site*.com/[1-9].png"

但下载失败。-输出如下

[1/10]: http://www.*site*.com/1http://w --> 1.png
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   531    0   531    0     0   1618      0 --:--:-- --:--:-- --:--:--  1618

文件 1.png 包含以下 html:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body><script type="text/javascript">//<![CDATA[try{(function(a){var b="http://",c="www.*site*.com",d="/cdn-cgi/cl/",e="img.gif",f=new a;f.src=[b,c,d,e].join("")})(Image)}catch(e){}//]]></script>
<h1>Not Found</h1>
<p>The requested URL /1http://w was not found on this server.</p>
<p>Additionally, a 404 Not Found
error was encountered while trying to use an ErrorDocument to handle the request.</p>
</body></html>

看起来它在请求的末尾重复了地址——不知道为什么

一次对每个文件运行一个命令

curl -O "http://www.*site*.com/1.png"

注意我也尝试过

curl "http://www.*site*.com/[1-9].png" -o "#1.ext"

所以它不是 -O 选项。

答案1

您可以使用 xargs 或简单的 for 循环来执行:

for i in `seq 0 9` ; do curl -O "http://www.*site*.com/$i.png"; done

编辑:我不知道您可以将这样的语法与 curl 一起使用...我试过了,它对我而言可以使用您的语法,即使没有参数-o。(使用 curl 7.26.0)

答案2

我能够使用 wget 按照您的示例完成此操作:

wget http://www.*site*.com/[1-9].png

在我的现实生活中的测试中:

wget https://raw.githubusercontent.com/jodumont/configFile/master/etc/mysql/conf.d/{docker,mysql,mysqld,mysqld_safe_syslog}.cnf

相关内容