首页 > 变量下载

变量下载

当使用wget或者curl碰到这样的一个下载地址怎么批量下载保存呢

http://www.a.com/xyz/a.txt

x y z三个都是变量但最后下载文件的文件名都相同。 比如:

http://www.a.com/123/a.txt 保存文件名为123a.txt
http://www.a.com/321/a.txt 保存文件名为321a.txt

手动重命名下 wget http://www.a.com/123/a.txt 123a.txt


curl自带的变量功能可以达到目的。详细信息请参考man curl

楼主没有明确指出xyz变化的规律。在这里,我假设xyz是一个3位数字。
如果xyz的样本不多,比如,只有{111,123,321}的时候,可以用以下的命令:

curl "http://www.a.com/{111,123,321}/a.txt" -o "#1_a.txt"  

这样就会自动保存下111_a.txt,123_a.txt,321_a.txt 这3个文件。

如果xyz的样本很多,那么需要使用另外一种变量类型[]:

curl "http://www.a.com/[100-999]/a.txt" -o "#1_a.txt"  

这样,curl会遍历从100到999,替换到url中去,并试图保存文件。但最终仍然只会保存事实上存在的文件,即111_a.txt,123_a.txt,321_a.txt

补充

楼主提到xyz的规律是类似于x.y.z这样的。那么可以添加多个变量。比如:

curl "http://www.a.com/[1-2].[0-10].[1-4]/a.txt" -o "#1.#2.#3_a.txt"  

假设你的要下载的 URL 保存在了 urls.txt 文件中。

for url in $(cat urls.txt); do
  name=$(echo $url|grep -o '[^/]\+/a\.txt$'|tr -d '/')
  wget $url -O $name
done
【热门文章】
【热门文章】