如何使用gsutil计算bucket-folder中的文件数

use*_*846 24 google-cloud-storage

是否可以选择计算bucket-folders中的文件数?

喜欢:

gsutil ls -count -recursive gs://bucket/folder

Result:   666 files
Run Code Online (Sandbox Code Playgroud)

我只想要一个总数量的文件来比较我的服务器上的sync-folder的数量.

我没有在手册中得到它.

jte*_*ace 51

带有选项(长列表)和(递归列表)的gsutil ls命令将递归列出整个存储桶,然后在结尾处生成所有对象(包括文件和目录)的总计数:-l-R

$ gsutil ls -lR gs://pub
    104413  2011-04-03T20:58:02Z  gs://pub/SomeOfTheTeam.jpg
       172  2012-06-18T21:51:01Z  gs://pub/cloud_storage_storage_schema_v0.json
      1379  2012-06-18T21:51:01Z  gs://pub/cloud_storage_usage_schema_v0.json
   1767691  2013-09-18T07:57:42Z  gs://pub/gsutil.tar.gz
   2445111  2013-09-18T07:57:44Z  gs://pub/gsutil.zip
      1136  2012-07-19T16:01:05Z  gs://pub/gsutil_2.0.ReleaseNotes.txt
... <snipped> ...

gs://pub/apt/pool/main/p/python-socksipy-branch/:
     10372  2013-06-10T22:52:58Z  gs://pub/apt/pool/main/p/python-socksipy-branch/python-socksipy-branch_1.01_all.deb

gs://pub/shakespeare/:
        84  2010-05-07T23:36:25Z  gs://pub/shakespeare/rose.txt
TOTAL: 144 objects, 102723169 bytes (97.96 MB)
Run Code Online (Sandbox Code Playgroud)

如果你真的只想要总数,你可以将输出传递给tail命令:

$ gsutil ls -lR gs://pub | tail -n 1
TOTAL: 144 objects, 102723169 bytes (97.96 MB)
Run Code Online (Sandbox Code Playgroud)

UPDATE

gsutil现在有一个du命令.这使得计算更容易:

$ gsutil du gs://pub | wc -l
232
Run Code Online (Sandbox Code Playgroud)

  • 太好了,谢谢...只是对于 4 个 mio 文件来说有点慢。这是操作 1 调用还是算作存储桶元素的数量?...可能会变得昂贵..:-) (4认同)
  • gsutil 解决方案在 gsutil v 4.15 @jterrace 中工作得很好,但前提是您列出的存储桶/路径中没有“子目录”。如果存在子目录,du 将汇总该目录下文件的大小,并在该目录的标准输出中打印一行(使文件计数不正确)。很抱歉对老问题的更新较晚。 (2认同)
  • 虽然`gsutil ls -l`可以在Windows(无尾或ws)中使用,但无需列出整个存储桶内容即可获取摘要 (2认同)

Jac*_*ack 39

如果您可以选择不使用 gsutil,最简单的方法是在 Google Cloud Platform 上检查它。转到“监控”>“指标资源管理器”:

  • 资源类型 : GCS 桶
  • 指标:对象计数 然后,在下表中,您可以看到每个存储桶包含的文档数量。

  • 这是一个未被充分重视的答案。 (7认同)
  • 如果您不以编程方式执行某些操作并且只需要计数,并且它不会占用您的 A 类操作配额,那么这比使用 gsutil 快得多。 (6认同)
  • 当然,这只适用于计算整个存储桶中的文件数量。您无法使用它来检查存储桶内特定文件夹中的文件数量。 (3认同)
  • 当您的存储桶包含超过一百万个对象且总大小超过几 GB 时尤其有用。 (2认同)
  • 这个伟大解决方案的缺点是每天只进行一次计算。这意味着显示的任何结果都是陈旧的,可能无法反映当前的情况。 (2认同)

Kev*_*ski 9

作为一个桶中有 450 万个对象的人,我使用了gsutil du gs://bucket/folder | wc -l大约 24 分钟


Chr*_*kGM 9

这不能递归工作,但您也可以从控制台获取单个大文件夹的计数。这种方法的优点是速度非常快。

  1. Sort and filter从存储桶中的过滤器菜单中 进行选择。选择排序和过滤

  2. 反转排序顺序,让 Google Cloud Storage 计算文件/文件夹的数量。 按名称分类

  3. 查看当前文件夹中文件/文件夹的数量。 查看计数


dla*_*lin 8

你想gsutil ls -count -recursive进去gs://bucket/folder?好吧; gsutil ls gs://bucket/folder/**将只列出文件路径的完整 url,gs://bucket/folder没有页脚或以冒号结尾的行。管道到wc -l会给你结果的行数。

gsutil ls gs://bucket/folder/** | wc -l

  • @northtree 我认为在这种情况下它可能是等效的,但是 ** 确实可以同时在多个级别上工作,所以我认为 `/folder/**/*.js` 会在文件夹之后的任何目录深度下找到所有 js 文件(除了文件夹本身),而`/folder/*/*.js` 仅适用于文件夹中目录中的js文件。 (2认同)