如何通过CloudShell获取S3桶中指定日期后修改的最大N个文件?
AWS S3 list-objects-v2 命令日期筛选失效问题解决
你的命令问题出在JMESPath查询的逻辑顺序和语法错误:你用&&同时执行了两个独立的查询——一个是筛选日期后的文件Key,另一个是对所有原始文件按大小排序取Top5,这两个结果会被合并,导致日期筛选的限制没作用到排序的集合上,所以会出现早于指定日期的文件。
要实现「先筛选2022-12-28及之后修改的文件,再取其中最大的5个」的需求,正确的命令应该是:
aws s3api list-objects-v2 --bucket BUCKETNAME --query 'sort_by(Contents[?LastModified>='\''2022-12-28'\''], &Size)[-5:].Key'
命令拆解:
Contents[?LastModified>='2022-12-28']:先从所有对象中筛选出2022-12-28及之后修改的子集sort_by(..., &Size):对这个筛选后的子集按文件大小升序排序[-5:]:取排序结果的最后5个(即最大的5个文件).Key:提取这5个文件的Key字段
注意:命令里的日期字符串需要用转义单引号包裹(\'2022-12-28\'),避免被shell解析错误。
内容的提问来源于stack exchange,提问作者Andrew Savetchuk
相关产品推荐
相关产品推荐

