如何按添加日期列出S3目录(而不是对象)?

0

【以下的问题经过翻译处理】 在Mac上查看文件和文件夹时,可以按“添加日期”排序,包括文件夹。我知道一种方法是在目录名称前缀上加上日期,这样按日期排序时就会按字母顺序排列。

但在某些情况下,您无法控制目录的命名方式,例如从Amazon HealthLake使用自动导出功能时,您只想快速找到最新的导出文件,而无需点击子目录以查找带日期的对象。

我猜一定有一些命令行技巧,所以我想在想出一个不错的循环之前先咨询一下。

profile picture
专家
已提问 8 个月前32 查看次数
1 回答
0

【以下的回答经过翻译处理】 我同意DALDEI上述所述的一切,并建议在使用下面的技术之前再进行进一步研究,但对于这个特定的用例,下面的命令会提供您正在寻找的结果(返回最后修改的文件夹的命令):

aws s3api list-objects-v2 --bucket "some-bucket-name" --query 'sort_by(Contents, &LastModified)[-1].Key' | tr -d '"' | grep -oE '[^\"].*\/\s*'

这个命令首先通过s3api接口调用获取最后修改的对象。结果可以是一个文件或一个“目录”。然后将结果管道转移到tr命令,移除引号,然后到grep,以返回最后一个正斜杠及其之前的字符。因此,无论最后修改的对象是“目录”还是文件,它都会返回到“目录”的完整路径,包括结尾的正斜杠和文件名(如果是文件)。

希望这可以帮助您!

注:

  • 该文章引用DALDEI的解释中使用带引号的“目录”
  • 不确定这在大型存储桶中的表现如何,只在几个嵌套的文件夹/文件中进行了测试,结果可能会有所不同。
profile picture
专家
已回答 8 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则