代码之家  ›  专栏  ›  技术社区  ›  xtra

AWS在S3 bucket中查找最大文件大小

  •  0
  • xtra  · 技术社区  · 7 年前

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

    目前我有:

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

    不允许我看到文件名。

    我还有命令列出bucket上所有文件的详细信息:

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

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

    1 回复  |  直到 7 年前
        1
  •  9
  •   sparrowt    6 年前

    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 仅选择这些字段。

    遗憾的是,我认为过滤是在客户端完成的,因为在一个大的bucket上运行时下载了28mb。然而,它仍然是一个有用的1-线,尽管不是很快。

        2
  •  5
  •   alecswan    7 年前

    下面应该返回bucket“bucket name”中最大文件的名称和大小。

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

    https://stedolan.github.io/jq/download/

        3
  •  -2
  •   Sid Parekar    7 年前

    以下是我所做的:

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

    步骤:

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