我试着用这篇文章来查找上次修改的文件,然后用AWS CLI从S3获取上次修改的对象
但这对于1000多个文件夹来说并不理想,而且根据文档,这应该是失败的。我需要搜索2000个文件夹对象。我想要的文件夹总是以D开头,后面跟着一组递增的数字。例:D1200
答案的结果让我创建了这个调用,它很有效:
aws s3 ls main.test.staging/General_Testing/Results/ --recursive | sort | tail -n 1 | awk '{print $4}'
但搜索数千个文件需要40秒,然后我需要正则表达式解析输出,以找到文件夹对象,而不是其中修改的最后一个文件。此外,如果我试图这样做以找到所需的文件夹(即结果
对象之后的对象):
aws ls s3 main.test.staging/General_Testing/Results/ | sort | tail -1
然后,我的输出将是D998
,因为排序功能将对文件夹名称进行如下排序:
D119
D12
D13
因为从技术上讲,D12
大于D119
,因为它在第二位有一个2
。按照这种奇怪的逻辑,我无法使用该调用来可靠地检索编号最高的文件夹,从而检索最后创建的文件夹。需要注意的是,包含文件的文件夹对象没有可用于查询的Last Modified
标记。
为了明确我的问题:我可以使用什么调用来查看大量的S3对象,以找到最大的编号文件夹对象?最好答案是快速的,可以处理1000个对象,并且不需要正则表达式分解。
我想知道你是否可以使用一个通用前缀
列表来克服你的程序有很多文件夹?
试试这个命令:
aws s3api list-objects-v2 --bucket main.test.staging --delimiter '/' --prefix 'General_Testing/Results/' --query CommonPrefixes --output text
(注意,is使用的是s3api
,而不是s3
)
它应该提供一个“文件夹”列表。我不知道它是否对返回的“文件夹”数量有限制。
至于排序D119
在D2
之前,这是因为它是对字符串排序。排序字符串时,输出完全正确。
若要按数字部分排序,您可能会使用“版本排序”。请参阅:如何从Bash中对包含公共前缀和后缀的字符串进行数字排序?
问题内容: 我正在尝试编写脚本以从Python中FTP服务器的最新子目录获取最新文件。我的问题是我无法找出最新的子目录。有两个选项可用,子目录具有ctime可用。在目录名称中还提到了日期,即在哪个日期创建了目录。但是我不知道如何获取最新目录的名称。我想出了以下方法(希望服务器端按最新的ctime排序)。我已经按照以下方式进行了操作,如果第一个对象是最新目录,它将可以正常工作。 但是,有什么方法可以
在Python中,我应该使用什么命令来获取包含我正在处理的文件的文件夹的名称? 这里就是我想要得到的。 我唯一想到的是使用两次: 还有更好的方法吗?
filename变量用于获取最新文件的名称。我的目标是监视文件夹,每当检索到新文件时,使用boto3自动将其上载到s3 bucket。 会话=BOT3。会话(aws\u access\u key\u id='aws\u access\u key\u id',aws\u secret\u access\u key='aws\u secret\u access\u key',region\u name
问题内容: 在Python中,我应该使用哪个命令来获取包含正在使用的文件的文件夹的名称? 这就是我想要得到的。 我唯一想出的就是使用两次: 有什么更好的方法吗? 问题答案: 您可以使用: 返回路径名path的目录名。这是通过将路径传递给函数split()返回的对中的第一个元素。 给定完整路径,然后您可以正常拆分以获取路径的最后一部分。例如,通过使用: 返回路径名path的基本名称。这是通过将路径传
我使用JavaMail和协议imap来组织电子邮件(gmail)。我创建了一个文件夹FOLDER1,代码如下: 我用代码移动消息: 它的工作原理 但我不明白。。。如果我想再次阅读邮件,但不想阅读已阅读的邮件,也不想阅读已创建文件夹中的邮件,则无法再次阅读。该名称已在收件箱中 有什么问题吗? 谢谢你的帮助
问题内容: 我需要使用文件夹中文件的所有名称创建一个列表。 例如,如果我有: 我想将它们存储为 with 作为值。 用Java做到最好的方法是什么? PS:我在Mac OS X上 问题答案: 你可以这样做: 你只想获取JPEG文件还是所有文件?