过滤S3列表对象结果以查找与模式匹配的键

时间:2014-12-03 15:04:31

标签: amazon-s3 pattern-matching aws-cli jmespath

我想使用AWS CLI查询存储桶的内容,看看是否存在特定文件,但存储桶包含数千个文件。如何过滤结果以仅显示与模式匹配的键名?例如:

aws s3api list-objects --bucket myBucketName --query "Contents[?Key==*mySearchPattern*]"

2 个答案:

答案 0 :(得分:31)

--query参数使用JMESPath表达式。允许您搜索字符串模式的JMESPath has an internal function contains

这应该会产生预期的结果:

aws s3api list-objects --bucket myBucketName --query "Contents[?contains(Key, `mySearchPattern`)]"

(使用Linux时,我需要使用单引号'而不是`附近的mySearchPattern。)

如果您想搜索带有特定字符的开始的密钥,您还可以使用--prefix参数:

aws s3api list-objects --bucket myBucketName --prefix "myPrefixToSearchFor"

答案 1 :(得分:0)

我在Ubuntu 14,awscli 1.2上尝试过 --query“ Contents [?contains(Key,'stati')]。Key” --query“ Contents [?contains(Key,\'stati \')]。Key” --query“ Contents [?contains(Key,stati)]。Key”

非法令牌值'?contains(Key,'stati')]。Key'

将aws版本升级到1.16后,可以使用

-查询“ Contents [?contains(Key,'stati')]。Key”