如何使用通配符搜索Amazon S3 Bucket?

nu *_*est 11 filtering amazon-s3 amazon-web-services

这个stackoverflow的答案帮了很大忙.但是,我想搜索给定存储桶中的所有PDF.

  1. 我点击"无".
  2. 开始输入.
  3. 我打字 *.pdf
  4. Enter

什么都没发生.有没有办法使用通配符或正则表达式通过在线S3 GUI控制台过滤桶搜索结果?

Mic*_*ios 18

如评论中所述,亚马逊的UI只能用于根据自己的文档按前缀搜索:

http://docs.aws.amazon.com/AmazonS3/latest/UG/searching-for-objects-by-prefix.html

还有其他搜索方法,但它们需要一些努力.仅举两个选项,AWS-CLI应用程序或Boto3 for Python.

我知道这篇文章很老但是谷歌搜索列表中的搜索结果很高,并且没有接受答案.Harish的另一个答案是链接到一个死网站.

  • 另请注意,*不允许*允许更丰富的搜索,并且*仅*在当前控制台页面上对项目进行排序,这使得在 S3 控制台中无法找到内容。(一定要从控制台发送 AWS 反馈。) (6认同)
  • 另请注意,此文档不再存在,并重定向到文档主页. (3认同)
  • 这是完全由狗屎。另一半烤服务。 (3认同)
  • 请注意,在提出问题时,该文档并不存在. (2认同)

小智 10

您可以使用带有--dryrun标志的复制功能:

aws s3 ls s3://your-bucket/any-prefix/ .\ --recursive --exclude * --include *.pdf --dryrun
Run Code Online (Sandbox Code Playgroud)

它会显示所有的 PDF 文件。

  • 那是因为 @user2568374 有正确的想法,但有错误的例子。它应该是:``aws s3 cp s3://your-bucket/any-prefix/ 。--recursive --排除“*” --include“*.pdf” --dryrun``` (4认同)
  • 比较AWS文档,似乎“aws s3 cp”具有通配符功能,就像Yossi在此处指出的那样,“aws s3 ls”似乎没有通配符功能。 (2认同)

Tec*_*ort 7

AWS CLI搜索: 在AWS Console中,我们可以仅搜索目录中的对象,但不能搜索整个目录中的对象,也只搜索文件的前缀名称(S3搜索限制).

最好的方法是在Linux OS中使用AWS CLI with below命令

aws s3 ls s3:// bucket_name/--recursive | grep search_word | 切-c 32-

使用通配符搜索文件 aws s3 ls s3:// bucket_name/--recursive | grep*.pdf


Mat*_*tts 6

如果您在 Python 中使用 boto3,则很容易找到这些文件。将 'bucket' 替换为存储桶的名称。

import boto3
s3 = boto3.resource('s3')
bucket = s3.Bucket('bucket')
for obj in bucket.objects.all():
    if '.pdf' in obj.key:
        print(obj.key)
Run Code Online (Sandbox Code Playgroud)

  • 令人沮丧的是,他们不能执行“Postfix”,因为他们已经有一个 Prefix 变量。 (2认同)