【发布时间】:2022-02-04 05:37:54
【问题描述】:
我尝试使用这篇文章查找最后修改的文件,然后 awk 查找它所在的文件夹:Get last modified object from S3 using AWS CLI
但这对于超过 1000 个文件夹并不理想,而且 documentation 应该会失败。我有 2000 多个文件夹对象需要搜索。我想要的文件夹总是以 D 开头,后面跟着一组递增的数字。例如:D1200
答案的结果使我创建了这个有效的调用:
aws s3 ls main.test.staging/General_Testing/Results/ --recursive | sort | tail -n 1 | awk '{print $4}'
但搜索数千个文件需要 40 多秒,然后我需要正则表达式解析输出以找到文件夹对象,而不是其中修改的最后一个文件。另外,如果我尝试这样做以找到我想要的文件夹(这是Results 对象之后的对象):
aws ls s3 main.test.staging/General_Testing/Results/ | sort | tail -1
那么我的输出将是D998,因为排序函数会像这样对文件夹名称进行排序:
D119
D12
D13
因为从技术上讲,D12 大于 D119,因为它在第二位有一个 2。按照这种奇怪的逻辑,我无法使用该调用来可靠地检索编号最高的文件夹,因此是最后一个创建的文件夹。需要注意的是,包含文件的文件夹对象没有可用于查询的Last Modified 标签。
为了明确我的问题:我可以使用什么调用来查看大量 S3 对象以找到编号最大的文件夹对象?最好答案是快速的,可以处理 1000 多个对象,并且不需要正则表达式分解。
【问题讨论】:
-
抱歉,请问您有什么问题?它不是很清楚你在扼杀什么?大量文件?缺少
Last Modified?排序顺序错误? -
@Marcin 请告诉我如何才能更清楚,但我正在寻找一个电话来找到我想要的文件夹名称,这不会花费太长时间。该注释只是让人们不要给我“查询上次修改”作为答案。不过,如果他们知道 AWS,也许我应该假设他们已经知道这一点。
标签: amazon-web-services amazon-s3 aws-cli