![按文件夹中的项目数限制递归“aws s3 ls”搜索](https://linux22.com/image/138083/%E6%8C%89%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%AD%E7%9A%84%E9%A1%B9%E7%9B%AE%E6%95%B0%E9%99%90%E5%88%B6%E9%80%92%E5%BD%92%E2%80%9Caws%20s3%20ls%E2%80%9D%E6%90%9C%E7%B4%A2.png)
这是场景:
我需要递归搜索大量文件夹和子文件夹,并使用 ls 命令将结果输出到日志文件中,但是,如果文件夹包含超过 10 个对象,我需要停止搜索该文件夹?原因是,一旦我在一个文件夹中有 10 个项目的样本,我就知道该文件夹中有什么,并且由于某些文件夹包含数万个结果,这将节省大量时间。
为什么你仅限于“ls”?因为我正在搜索 S3,使用命令aws s3 ls
.该命令aws s3 ls --summarize --recursive
满足我的需要,我现在需要一种方法来根据文件夹中的项目数量限制搜索。
我尝试过使用 aws s3api list-buckets 和 list-objects 等,但即使使用 --max-values 标签,它也不能满足我的需要。感谢您的帮助。
答案1
罗艾玛是正确的; “aws s3 ls”以这种方式命名,以便人们知道它所做的工作类型(列出文件)。它并不是真正的 ls 命令,只是尝试在非常非常表面的级别上执行相同的操作。
我相信做你想做的事情的最好方法是使用 boto3 API 编写脚本; s3.client.list_objects() 有一个 MaxKeys 参数,您可以使用它来限制路径内的检索。