我想使用AWS CLI查询存储桶的内容,看看是否存在特定文件,但存储桶包含数千个文件。如何过滤结果以仅显示与模式匹配的键名?例如:
aws s3api list-objects --bucket myBucketName --query "Contents[?Key==*mySearchPattern*]"
答案 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”