我将Amazon S3中文件的键设置为folder\filename。是否有一种方法可以获取“文件夹”下的所有文件(通过正则表达式搜索文件)?
你在问题中标记了aws-sdk
,但没有提及语言,因此我将在本答案中使用Python。
list_objects_v2()
命令接受一个Prefix
:
response = client.list_objects_v2(
Bucket='string',
Delimiter='string',
EncodingType='url',
MaxKeys=123,
Prefix='string',
ContinuationToken='string',
FetchOwner=True|False,
StartAfter='string',
RequestPayer='requester'
)
Prefix='folder/'
,它将返回该文件夹中的对象。你也可以使用 aws-cli 获取对象列表。
在终端中输入以下命令:
aws s3 ls bucketName/folderName/
这里 '/' 在文件夹名字末尾是必须的,否则你只会得到文件夹名字作为结果。
folderA/abc/fileabcX
folderA/def/filedefX
folderB/abc/fileabcY
folderB/def/filedefY
folderC/abc/fileabcZ
folderC/def/filedefZ
folderC/xyz/filexyzZ
import boto3
client = boto3.client('s3')
objs = client.list_objects_v2(Bucket="test", Prefix='', Delimiter='/')
for prefix in objs.get('CommonPrefixes')
folder = prefix.get('Prefix')
resp = client.list_objects_v2(
Bucket="test",
Prefix=folder + 'abc/',
)
if resp.get('Contents') is not None:
for obj in resp.get('Contents'):
print(obj.get('Key'))
输出:
fileabcX
fileabcY
fileabcZ