wget更适合批量下载,支持-i参数读取URL列表并提供断点续传、重试等选项;curl需配合shell脚本实现批量下载,灵活性高但配置更复杂。

在 linux 中批量下载文件,wget 和 curl 是最常用的命令行工具。虽然两者都能完成下载任务,但在批量操作上,wget 更适合简单场景,而 curl 功能更灵活但需要配合脚本使用。
1. 使用 wget 批量下载(推荐)
wget 支持从文件中读取 URL 列表,非常适合批量下载。
方法一:用 -i 参数从文件读取 URL
创建一个文本文件,每行一个下载链接:
https://example.com/file1.zip https://example.com/file2.zip https://example.com/file3.zip
执行命令:
wget -i urls.txt
这样会依次下载所有文件。
常用选项:
- -c:断点续传,网络中断后可继续下载
- -t 3:失败时重试 3 次
- -nv:非详细模式,减少输出信息
- -P /path/to/dir:指定保存目录
例如:
wget -c -t 3 -nv -P ./downloads -i urls.txt
方法二:用 shell 循环批量下载
如果 URL 有规律,可以直接用 for 循环:
for i in {1..10}; do wget https://example.com/file$i.zip done
2. 使用 curl 批量下载
curl 不像 wget 支持 -i 参数直接读文件,但可以结合 shell 脚本实现。
方法一:用 while 读取文件中的 URL
while read url; do curl -O "$url" done < urls.txt
注意:-O 表示使用远程文件名保存。
方法二:配合 seq 或花括号批量请求
适用于编号连续的文件:
for i in {1..5}; do curl -O https://example.com/image$i.jpg done
curl 小技巧:
例如按序号命名:
for i in {1..3}; do curl -# -L -o "file$i.zip" "https://example.com/file$i.zip" done
3. 实用建议和注意事项
避免被封 IP
大批量下载时,服务器可能限制频繁请求。可以加延迟:
for url in $(cat urls.txt); do wget "$url" sleep 1 # 每次下载后暂停 1 秒 done
检查链接有效性
提前测试几个链接是否能访问:
head -3 urls.txt | while read url; do curl -I "$url" 2>/dev/null | head -1 done
日志记录
把下载过程记录到日志,方便排查问题:
wget -i urls.txt >> download.log 2>&1
基本上就这些。wget 更适合“开箱即用”的批量下载,curl 更适合定制化场景。根据你的需求选择即可。