我的Amazon S3存储桶的文件夹结构如下所示。
如果我只知道文件名 file3.doc 和存储桶名称存储桶名称,如何在 file3.doc >斗名称即可。如果我知道,它位于 00002 文件夹中,我只需转到该文件夹并开始输入文件名,但我无法知道我要搜索的文件位于哪个文件夹中。< / p>
答案 0 :(得分:3)
如果你根本不知道它在哪里,你可能需要使用像s3cmd这样的命令行工具:
s3cmd --recursive ls s3://mybucket | grep "file3"
但可能会进行一些有限的搜索:
答案 1 :(得分:3)
仅使用AWS CLI,您可以使用list-objects
参数对存储桶运行--query
。这不是一个快速操作,因为它在获取文件列表后在本地运行,而不是在s3的api中运行。
$ aws s3api list-objects --bucket bucket-name --query "Contents[?contains(Key, 'file3')]"
[
{
"LastModified": "2017-05-31T20:36:28.000Z",
"ETag": "\"b861daa5cc3775f38519f5de6566cbe7\"",
"StorageClass": "STANDARD",
"Key": "00002/file3.doc",
"Owner": {
"DisplayName": "owner",
"ID": "123"
},
"Size": 27032
}
]
使用--query
而不仅仅是使用grep管道的好处是,您将获得完整的响应,包括list-objects
中通常包含的所有可用元数据,而无需在参数之前和之后徘徊。 grep。
请参阅Finding Files in S3上的这篇文章,了解更多信息,包括一个类似的示例,该示例显示了具有元数据的好处,当同名文件最终位于不同的目录中时。
答案 2 :(得分:0)
您可以使用AWS CLI轻松做到这一点。
aws s3 ls s3://BUCKET-NAME/ --recursive | grep FILE-NAME.TXT