You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 00:50:28