首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过特定的文件大小获取查询s3桶

如何通过特定的文件大小获取查询s3桶
EN

Stack Overflow用户
提问于 2022-05-09 14:16:44
回答 1查看 347关注 0票数 0

目前有一些文件被上传到它们被破坏的地方。它们的文件大小为0字节。我可以问如何查询我的s3桶并按特定大小进行筛选,我试图询问什么时候字节是0?

目前我有两个问题。

首先,在存储桶中递归列出所有文件,但不进行排序。

代码语言:javascript
复制
aws s3 ls s3://testbucketname --recursive --summarize --human-readable

第二种是排序,但只有在提供前缀时,在我的示例中,前缀是文件夹名。我当前的桶结构如下所示:{accountId}/{filename}

代码语言:javascript
复制
aws s3api list-objects-v2 --max-items 10 --bucket testbucketname --prefix "30265"  --query "sort_by(Contents,&Size)"

30265是帐户is /文件夹名。当没有提供前缀时,排序就无法正常工作。

任何帮助都将不胜感激。

此查询用于筛选名称,该名称是一个字符串。

s3api列表-对象-桶测试桶名称-查询“内容?包含(键,'.jpg')”

不幸的是,我不能用contains来表示大小,而且没有相等的值。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-09 16:02:48

您可以使用--query逻辑在本地将列表对象筛选为只有零字节大的对象:

代码语言:javascript
复制
aws s3api list-objects-v2 --bucket example-bucket --query 'Contents[?Size==`0`]'

或者,如果您只想看到没有其他元数据的键列表,则可以进一步筛选列表:

代码语言:javascript
复制
aws s3api list-objects-v2 --bucket example-bucket --query 'Contents[?Size==`0`].Key'

(对于这两种情况,在Windows上运行时,将外部'替换为"。)

此外,如果目标是删除这些对象,则可以使用jq和子subshell构造删除目标对象的查询:

代码语言:javascript
复制
aws s3api delete-objects --bucket example-bucket --delete \
"$(aws s3api list-objects-v2 --bucket example-bucket --query 'Contents[?Size==`0`].Key' |\
 jq '{"Objects": map({"Key":.})}')"

没有一种直接的方法可以用Windows的命令解释器来完成同样的构造。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72173481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档