当使用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
假设你的要下载的 URL 保存在了 urls.txt 文件中。
for url in $(cat urls.txt); do
name=$(echo $url|grep -o '[^/]\+/a\.txt$'|tr -d '/')
wget $url -O $name
done
1 回答3.7k 阅读
1 回答1.2k 阅读
用
curl
自带的变量功能可以达到目的。详细信息请参考man curl
楼主没有明确指出xyz变化的规律。在这里,我假设xyz是一个3位数字。
如果xyz的样本不多,比如,只有{111,123,321}的时候,可以用以下的命令:
这样就会自动保存下111_a.txt,123_a.txt,321_a.txt 这3个文件。
如果xyz的样本很多,那么需要使用另外一种变量类型[]:
这样,curl会遍历从100到999,替换到url中去,并试图保存文件。但最终仍然只会保存事实上存在的文件,即111_a.txt,123_a.txt,321_a.txt
补充
楼主提到xyz的规律是类似于x.y.z这样的。那么可以添加多个变量。比如: