Linux下用Curl批量下载指定路径文件并删除的Shell脚本实现
批量下载并删除文件的Shell脚本实现
以下是满足需求的Shell脚本,可直接在Linux环境中执行:
#!/bin/bash # 定义基础配置 BASE_URL="http://sometimesdownload.com/list_of_files" DOWNLOAD_DIR="/tmp/downloaded_files" # 创建下载目录(如果不存在) mkdir -p "$DOWNLOAD_DIR" # 获取文件列表并解析出每个文件名 file_list=$(curl -s "$BASE_URL" | tr -d '[]"' | tr ',' '\n') # 遍历文件列表,逐个下载 for file in $file_list; do # 跳过空行(防止解析出的内容有空白) [ -z "$file" ] && continue echo "正在下载文件: $file" curl -s -o "$DOWNLOAD_DIR/$file" "$BASE_URL/$file" done # 遍历文件列表,逐个删除源文件 for file in $file_list; do [ -z "$file" ] && continue echo "正在删除源文件: $file" curl -s -X DELETE "$BASE_URL/$file" done echo "所有操作完成"
关键步骤说明
- 目录创建:用
mkdir -p确保下载目录存在,即使父目录不存在也会自动创建 - 列表解析:
- 先用
curl -s静默获取文件列表(-s参数避免输出冗余进度信息) - 通过
tr -d '[]"'去掉列表中的方括号和双引号 - 再用
tr ',' '\n'把逗号分隔的内容转换成每行一个文件名,方便循环遍历
- 先用
- 文件下载:循环中使用
curl -o指定本地保存路径,严格保持原文件名 - 源文件删除:循环中发送
DELETE请求到对应文件的URL,完成远端文件删除
可选优化建议
- 添加下载失败判断:在下载后检查命令返回码,比如
if [ $? -ne 0 ]; then echo "下载$file失败"; fi,方便排查问题 - 添加删除失败判断:同理检查DELETE请求的返回码,确保删除操作执行成功
- 并行下载:如果文件数量多且网络条件允许,可以用
xargs -P实现多线程并行下载,提升整体效率
内容的提问来源于stack exchange,提问作者Kamal Chopra
相关产品推荐
相关产品推荐

