我想使用AWS CLI查询存储桶的内容并查看是否存在特定文件,但该存储桶包含数千个文件。如何过滤结果,使其只显示与模式匹配的键名?例如:
aws s3api list-objects --bucket myBucketName --query "Contents[?Key==*mySearchPattern*]"
发布于 2014-12-03 15:04: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"
发布于 2019-01-23 08:39:04
我在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后,使用
--query "Contents[?contains(Key,'stati')].Key"
https://stackoverflow.com/questions/27274996
复制相似问题