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

如何在含10k文件的AWS S3存储桶中筛选含指定字符串的对象Key?

解决方案:筛选S3存储桶中Key包含特定字符串的对象

嗨,针对你要从S3存储桶的10000个文件里筛选Key包含特定字符串(比如示例中的"test")的需求,我整理了几个实用的方案,覆盖命令行和编程两种场景,你可以根据自己的情况选择:

方法一:使用AWS CLI(快速便捷)

如果你习惯用命令行操作,这是最直接的方式。通过aws s3 ls递归列出所有对象,再结合grep过滤包含目标字符串的Key:

# 列出所有包含"test"的对象(显示完整信息:日期、大小、Key)
aws s3 ls s3://你的存储桶名称/ --recursive | grep "test"

如果只需要提取Key部分,可以用awk进一步处理:

# 仅输出符合条件的对象Key
aws s3 ls s3://你的存储桶名称/ --recursive | grep "test" | awk '{print $4}'

注意:--recursive参数会遍历存储桶下所有层级的对象,适合你的10000个文件的场景;记得把你的存储桶名称替换成实际的桶名。

方法二:使用Python Boto3 SDK(可编程场景)

如果需要把筛选逻辑集成到代码里,用Boto3(AWS的Python SDK)是个好选择。因为S3单次请求最多返回1000个对象,所以我们用分页器来处理大量文件:

import boto3

# 初始化S3客户端
s3_client = boto3.client('s3')
bucket_name = '你的存储桶名称'
target_string = 'test'

# 使用分页器遍历所有对象,避免单次返回数量限制
paginator = s3_client.get_paginator('list_objects_v2')
for page in paginator.paginate(Bucket=bucket_name):
    # 检查当前页是否有对象(避免空页报错)
    if 'Contents' in page:
        for obj in page['Contents']:
            obj_key = obj['Key']
            # 判断Key是否包含目标字符串
            if target_string in obj_key:
                print(obj_key)

提示:运行前确保已经配置好AWS凭证(比如通过环境变量、~/.aws/credentials文件或者IAM角色)。

补充说明

如果你的需求是前缀匹配(比如Key以"abc_test"开头),可以直接在list_objects_v2或者AWS CLI中使用--prefix参数,这样能减少不必要的遍历,效率更高。但针对你要的“任意位置包含特定字符串”的场景,上面两种方法是最适用的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:34:16