一、整理文件地址
将需要下载的文件地址写入url_list.txt,一行一个url。
二、通过wget下载
新建download.sh脚本文件,写入以下内容:
#!/bin/bash
# 定义要存储下载内容的目录
download_dir="/path/to/download_directory"
# 如果目录不存在,则创建目录
if [ ! -d "$download_dir" ]; then
mkdir -p "$download_dir"
fi
# 文件包含URL列表
url_file="/path/to/your/url_list.txt"
# 逐行读取URL文件,并使用wget下载
while IFS= read -r url; do
if [[ -n "$url" ]]; then
echo "Downloading: $url"
wget -P "$download_dir" "$url"
fi
done < "$url_file"
echo "All downloads complete."
三、执行下载命令
#请先确认路径正确
chmod +x download.sh
./download.sh
PS:如果想要实现下载后的文件自动重命名,可将download.sh修改为:
#!/bin/bash
# 定义要存储下载内容的目录
download_dir="/path/to/download_directory"
# 如果目录不存在,则创建目录
if [ ! -d "$download_dir" ]; then
mkdir -p "$download_dir"
fi
# 文件包含URL列表
url_file="/path/to/your/url_list.txt"
# 初始化计数器
i=1
# 逐行读取URL文件,并使用wget下载
while IFS= read -r url; do
if [[ -n "$url" ]]; then
echo "Downloading: $url"
# 使用 -O 指定完整路径文件名
wget -O "${download_dir}/${i}.jpg" "$url"
let i=i+1
fi
done < "$url_file"
echo "All downloads complete."
文件名则会按下载顺序生成 (1.jpg, 2.jpg, 3.jpg…)
-
上述方法虽然可以实现文件自动重命名,但是如果下载链接中有错误文件,仍然会生成相应序号的文件名,若想保持文件名称连续,可增加错误处理,将
download.sh修改为:
#!/bin/bash
# 定义要存储下载内容的目录
download_dir="/path/to/download_directory"
# 如果目录不存在,则创建目录
if [ ! -d "$download_dir" ]; then
mkdir -p "$download_dir"
fi
# 文件包含URL列表
url_file="/path/to/your/url_list.txt"
# 初始化计数器
i=1
# 逐行读取URL文件,并使用wget下载
while IFS= read -r url; do
if [[ -n "$url" ]]; then
echo "Downloading: $url"
# 创建临时文件路径(使用随机数避免冲突)
temp_file="${download_dir}/temp.$$.$RANDOM.jpg"
# 尝试下载到临时文件
if wget -O "$temp_file" "$url" 2>/dev/null; then
# 下载成功:重命名为最终文件
final_file="${download_dir}/${i}.jpg"
mv -f "$temp_file" "$final_file"
echo "Download successful: $final_file"
let i=i+1
else
# 下载失败:删除临时文件并报错
rm -f "$temp_file"
echo "Download failed: $url"
fi
fi
done < "$url_file"
echo "All downloads complete."
主要改进说明:
-
临时文件处理:
-
使用临时文件路径:
temp_file="${download_dir}/temp.$$.$RANDOM.jpg" -
$$表示当前进程ID -
$RANDOM生成随机数 -
确保多个下载任务不会冲突
-
-
错误处理流程:
if wget -O "$temp_file" "$url" 2>/dev/null; then # 成功处理 else # 失败处理 fi -
下载成功时:
- 将临时文件重命名为序号文件:
mv -f "$temp_file" "${download_dir}/${i}.jpg" - 增加计数器:
let i=i+1
- 将临时文件重命名为序号文件:
-
下载失败时:
- 删除临时文件:
rm -f "$temp_file" - 不增加计数器(保持序号连续)
- 输出错误信息:
echo "Download failed: $url"
- 删除临时文件:
-
静默模式:
2>/dev/null隐藏wget的错误输出(保留成功信息)- 如需查看详细错误,可移除这部分