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

如何通过AWS CLI从S3存储桶下载指定日期范围的文件?

如何用AWS CLI下载指定日期范围的S3文件

我来帮你搞定这个问题!AWS CLI本身没有直接支持日期范围过滤的参数,但我们可以根据你的S3文件情况分两种方式实现需求,具体如下:

场景1:文件名包含明确日期格式(如YYYY-MM-DD)

如果你的S3文件命名带有清晰的日期标识(比如data_2019-08-08.log、report_2019-08-15.csv这类),可以通过通配符组合来精准匹配日期范围:

比如要下载2019年8月8日至15日的文件,执行以下命令:

aws s3 cp s3://你的存储桶名称/目标路径/ ./本地下载目录/ --recursive \
  --exclude "*" \
  --include "*2019-08-0[89]*" \
  --include "*2019-08-1[0-5]*"
  • 命令解释:
    1. --exclude "*"先排除所有文件,确保只下载我们指定的内容
    2. *2019-08-0[89]*匹配8月8日、9日的文件([89]表示匹配8或9)
    3. *2019-08-1[0-5]*匹配8月10日至15日的文件([0-5]表示匹配0到5的数字)
      如果你的日期格式是其他样式(比如MM-DD-YYYY),只需调整通配符对应的日期部分即可。

场景2:根据文件最后修改时间筛选

如果文件名没有日期标识,或者你需要严格基于S3对象的最后修改时间来筛选下载,我们需要先列出符合时间范围的文件,再批量下载:

步骤1:导出符合时间范围的文件列表

使用aws s3api list-objects命令,结合JMESPath表达式筛选目标时间内的文件,导出到文本文件:

aws s3api list-objects --bucket 你的存储桶名称 --prefix "目标路径/" \
  --query "Contents[?LastModified>='2019-08-08T00:00:00Z' && LastModified<'2019-08-16T00:00:00Z'].Key" \
  --output text > files-to-download.txt
  • 注意:时间格式必须是ISO 8601(如YYYY-MM-DDTHH:MM:SSZ),这里结束时间设为8月16日0点,确保包含8月15日23:59:59之前的所有文件。

步骤2:批量下载文件

你可以用以下两种方式批量下载列表中的文件:

方式1:使用xargs(适合无空格的文件路径)

xargs -a files-to-download.txt -I {} aws s3 cp s3://你的存储桶名称/{} ./本地下载目录/{}

方式2:使用bash循环(支持含空格的文件路径)

while read -r key; do
  aws s3 cp "s3://你的存储桶名称/$key" "./本地下载目录/$key"
done < files-to-download.txt

以上两种方式都能帮你实现指定日期范围的S3文件下载,你可以根据自己的文件情况选择合适的方法~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:22:23