使用wget按源地址创建对应目录下载文件的方法
为每个源地址创建独立目录的Wget解决方案
要实现每个源地址对应独立目录存储下载文件,单条wget命令无法完成,需通过Shell脚本循环处理每个地址,具体步骤如下:
创建处理脚本
新建名为download.sh的脚本,内容如下:#!/bin/bash # 逐行读取list.txt中的地址,过滤空行 while read -r url; do if [ -z "$url" ]; then continue fi # 提取地址末尾的目录名(如从https://blogspot.com/test/001得到001) dir_name=$(basename "$url") # 创建目标目录(不存在则创建,存在不报错) mkdir -p "$dir_name" # 进入目录执行下载,失败则终止脚本 cd "$dir_name" || { echo "无法进入目录 $dir_name"; exit 1; } # 执行wget下载,仅从当前源地址获取符合规则的PDF wget -r -l 1 -nd -H --accept-regex 'https://blogspot.com/s[0-9]{4}/[0-9]{3}.pdf' --no-parent "$url" # 返回上级目录 cd .. done < list.txt赋予脚本执行权限
在终端运行:chmod +x download.sh执行脚本开始下载
直接运行脚本即可:./download.sh
关键逻辑说明
basename "$url":自动提取地址的最后路径段作为目录名,适配带/或不带/的地址格式。mkdir -p:确保目录层级存在,避免因目录不存在导致下载失败。--no-parent:防止wget爬取当前源地址的上级页面,严格限制下载范围。- 保留原命令的
-r -l 1:递归下载当前页面的所有链接(仅一层),配合--accept-regex精准过滤目标PDF。
内容的提问来源于stack exchange,提问作者Mauro
相关产品推荐
相关产品推荐

