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

如何通过变量、循环编写bash脚本读取文件S3路径执行aws s3 cp命令

Bash批量执行S3路径拷贝脚本实现

前置说明

你可以将存储S3源路径、目标路径对的文件命名为s3_copy_list.txt,脚本会按制表符为分隔符逐行读取内容执行拷贝。

完整脚本

#!/bin/bash
# 批量S3文件拷贝脚本
PATH_LIST="s3_copy_list.txt"

# 检查路径列表文件是否存在
if [[ ! -f "$PATH_LIST" ]]; then
    echo "错误:路径列表文件 $PATH_LIST 不存在"
    exit 1
fi

# 逐行读取文件,指定制表符为字段分隔符
while IFS=$'\t' read -r SOURCE DESTINATION || [[ -n "$SOURCE" ]]; do
    # 跳过空行或者字段不完整的行
    if [[ -z "$SOURCE" || -z "$DESTINATION" ]]; then
        continue
    fi
    # 可以先在aws命令前加echo试运行,确认输出命令无误后再去掉echo正式执行
    echo "正在拷贝:$SOURCE -> $DESTINATION"
    aws s3 cp "$SOURCE" "$DESTINATION"
done < "$PATH_LIST"

关键逻辑说明

  • IFS=$'\t'指定行内字段分隔符为制表符,完美适配你的文件格式,不会因为路径中包含空格出现拆分错误
  • read -r参数避免路径中的特殊转义字符被bash自动转义,保证路径读取准确
  • 末尾的|| [[ -n "$SOURCE" ]]兼容最后一行没有换行符的文件,避免漏掉最后一行路径
  • 所有变量都用双引号包裹,避免路径含空格时执行命令出错

使用步骤

  • 将你整理好的路径列表保存为s3_copy_list.txt,和上述脚本放在同一目录下
  • 给脚本添加执行权限:chmod +x s3_batch_copy.sh
  • 试运行验证:把脚本中aws s3 cp前面加echo,执行脚本后会打印所有要运行的命令,确认无误后再去掉echo
  • 正式执行:./s3_batch_copy.sh

内容的提问来源于stack exchange,提问作者mht.haque

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:42:01