AWS在S3存储桶中找到最大文件大小

时间:2018-12-12 14:31:06

标签: amazon-web-services amazon-s3

我想找到S3存储桶中最大文件的大小和名称。

目前,我有:

aws s3api list-objects --bucket bucket-name --output json --query "[max(Contents[].Size), length(Contents[])]"

不允许我看到文件名。

我还有命令列出存储桶中所有文件的详细信息:

aws s3api list-object-versions --bucket bucket-name --query 'Versions[*].Size'

什么命令可以给我S3存储桶中最大文件的名称和大小?

3 个答案:

答案 0 :(得分:0)

这是我所做的:

使用“>”运算符将命令的输出发送到size.txt文件。然后在该文本文件中搜索最大大小以找到相应的文件名。

步骤:

touch sizes.txt "your_command" > sizes.txt vi sizes.txt /"max_size_retrieved_from_command"

答案 1 :(得分:0)

以下内容应返回存储桶“ bucket-name”中最大文件的名称和大小。

aws s3api list-object-versions --bucket bucket-name | jq -r '.Versions[] | "\(.Key)\t \(.Size)"' | sort -k2 -r -n | head -1

上面的命令使用jq,您可以从https://stedolan.github.io/jq/download/安装它

答案 2 :(得分:0)

仅使用AWS CLI,它将找到最大的文件:

aws s3api list-objects-v2 --bucket bucket-name --query "sort_by(Contents, &Size)[-1:]"

或包括非当前版本(如果适用):

aws s3api list-object-versions --bucket bucket-name --query "sort_by(Versions[*], &Size)[-1:]"

可选调整:

  • -1替换为-N,以查找最大的N个文件。
  • .[Key,Size]的末尾加上--query以仅选择那些字段。

可悲的是,我认为过滤是在客户端完成的,因为在大型存储桶上运行时,此下载量为28 MB。但是,尽管速度不快,但它仍然是有用的1-liner。