Linux下如何使用wget按URL列表逐一下载并保存为指定文件名
实现方法
假设你保存下载规则的文件名为download_list.csv,可以通过以下两种常用方案实现需求:
方案1:Shell循环逐行处理(通用性最强,无额外依赖)
直接用内置的while读取文件内容,拆分字段后调用wget即可:
while IFS=, read -r url filename; do wget -O "$filename" "$url" done < download_list.csv
参数说明:
IFS=,:指定字段分隔符为英文逗号,自动将每行内容拆分为下载链接、文件名两个变量-O "$filename":强制wget将下载内容保存为指定文件名,不会使用URL自带的默认文件名- 变量外层加双引号是为了兼容文件名、URL中包含空格的特殊场景
方案2:awk单行命令处理
如果你习惯用awk处理结构化文本,也可以直接生成并执行wget命令:
awk -F, '{system("wget -O \""$2"\" \""$1"\"")}' download_list.csv
补充优化建议
- 如果文件中存在空行、注释行,可以加判断逻辑过滤无效行:
while IFS=, read -r url filename; do # 跳过空行、以#开头的注释行 [[ -z "$url" || "$url" =~ ^# ]] && continue wget -c -O "$filename" "$url" done < download_list.csv - 额外添加的
-c参数支持断点续传,网络不稳定时可以避免重复下载完整文件。
内容的提问来源于stack exchange,提问作者M9A
相关产品推荐
相关产品推荐

