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

如何通过Shell脚本从AWS S3存储桶文件夹下载最新2个文件?

从AWS S3存储桶下载最新2个文件的Shell脚本实现

你已经找对了列出最新文件的核心命令,接下来只需要把这些文件路径传递给aws s3 cp就能完成下载啦!这里提供两种实用的实现方式,按需选择即可:

方式一:while read循环(推荐,支持带空格的文件名)

这种方法能兼容文件名包含空格、特殊字符的场景,稳定性拉满:

# 定义你的S3存储桶路径和本地下载目录
BUCKET="s3://your-bucket-name/target-folder"
LOCAL_DIR="./local-save-path"

# 先确保本地目录存在,不存在就创建
mkdir -p "$LOCAL_DIR"

# 遍历最新2个文件并逐一下载
aws s3 ls "$BUCKET" --recursive | sort | tail -n 2 | awk '{print $4}' | while read -r FILE_PATH; do
    aws s3 cp "$BUCKET/$FILE_PATH" "$LOCAL_DIR/"
done

代码说明:

  • mkdir -p "$LOCAL_DIR":-p参数支持创建多级目录,避免因目录不存在导致下载失败。
  • while read -r FILE_PATH:逐行读取前面输出的文件路径,-r参数能避免转义特殊字符,防止文件名解析出错。
  • aws s3 cp "$BUCKET/$FILE_PATH" "$LOCAL_DIR/":拼接完整的S3文件地址,将文件下载到指定本地目录。

方式二:xargs命令(适合文件名无特殊字符的场景)

如果你的文件名里没有空格或特殊字符,用xargs会更简洁:

BUCKET="s3://your-bucket-name/target-folder"
LOCAL_DIR="./local-save-path"

mkdir -p "$LOCAL_DIR"

aws s3 ls "$BUCKET" --recursive | sort | tail -n 2 | awk '{print $4}' | xargs -I {} aws s3 cp "$BUCKET/{}" "$LOCAL_DIR/"

代码说明:

  • xargs -I {}:把前面输出的每一行内容替换为{},再传递给后面的aws s3 cp命令,实现批量下载。

额外提醒:

  • 先确认AWS CLI已配置好对应权限,可通过aws s3 ls "$BUCKET"测试能否正常访问存储桶。
  • 若要下载更多最新文件,只需修改tail -n 2里的数字,比如改成tail -n 5就能下载最新5个文件。

内容的提问来源于stack exchange,提问作者Rootie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 20:48:02