如何使用cURL下载文本文件内的URL列表并自定义保存文件名
短期临时方案(自动追加序号命名)
直接通过bash循环逐行读取URL,搭配curl的-o参数自定义输出文件名即可,命令如下:
i=1; while read -r url; do curl -o "$(printf "normal%02d.jpg" $i)" "$url"; i=$((i+1)); done < urls.txt
说明:
%02d是数字格式化规则,会自动把序号补为2位,不足的位用0填充,刚好匹配你需要的normal01.jpg、normal02.jpg格式;如果需要3位序号,把%02d改为%03d即可。- 如果需要跟随重定向、断点续传,可给curl补充
-L -C -参数,修改后命令为:i=1; while read -r url; do curl -L -C - -o "$(printf "normal%02d.jpg" $i)" "$url"; i=$((i+1)); done < urls.txt
长期解决方案(按文件内指定名称命名)
调整后每行按「URL 自定义文件名」格式存储的情况下,直接通过read命令拆分每行的两个字段即可,命令如下:
while read -r url filename; do curl -o "${filename}.jpg" "$url"; done < urls.txt
说明:
- read命令默认按空白字符拆分每行内容,第一个拆分结果存到
url变量,第二个存到filename变量,直接拼接.jpg后缀作为输出文件名,完全匹配你需要的命名规则。 - 同样可补充curl参数实现更稳定的下载:
while read -r url filename; do curl -L -C - -o "${filename}.jpg" "$url"; done < urls.txt
内容的提问来源于stack exchange,提问作者chiefthinkerupper
相关产品推荐
相关产品推荐

