如何在不知道包含文件夹

时间:2015-10-01 05:57:44

标签: amazon-web-services amazon-s3

我的Amazon S3存储桶的文件夹结构如下所示。

  • bucket-name \ 00001 \ file1.txt
  • bucket-name \ 00001 \ file2.jpg
  • bucket-name \ 00002 \ file3.doc
  • 水桶名\ 00001 \ file4.ppt

如果我只知道文件名 file3.doc 和存储桶名称存储桶名称,如何在 file3.doc >斗名称即可。如果我知道,它位于 00002 文件夹中,我只需转到该文件夹​​并开始输入文件名,但我无法知道我要搜索的文件位于哪个文件夹中。< / p>

3 个答案:

答案 0 :(得分:3)

如果你根本不知道它在哪里,你可能需要使用像s3cmd这样的命令行工具:

s3cmd --recursive ls s3://mybucket | grep "file3"

但可能会进行一些有限的搜索:

https://stackoverflow.com/a/21836343/562557

答案 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