Google cloud platform 带有gsutil的通配符文件夹列表

Google cloud platform 带有gsutil的通配符文件夹列表,google-cloud-platform,google-cloud-storage,gsutil,Google Cloud Platform,Google Cloud Storage,Gsutil,我试图列出以固定字符串开头,后跟字母数字字符的GCS文件夹。我不想做递归列表。当我试着跟随 $ gsutil ls gs://somebucket/monitor* 假设我们有以下文件夹结构(我知道内部没有文件夹的概念,只是路径前缀) 在输出中,我想要的是 gs://somebucket/monitor gs://somebucket/monitor1 我试过跟随 $ gsutil ls gs://somebucket/monitor* 及 但两者都没有给出所需的输出 gsutil中是否有

我试图列出以固定字符串开头,后跟字母数字字符的GCS文件夹。我不想做递归列表。当我试着跟随

$ gsutil ls gs://somebucket/monitor*
假设我们有以下文件夹结构(我知道内部没有文件夹的概念,只是路径前缀)

在输出中,我想要的是

gs://somebucket/monitor
gs://somebucket/monitor1
我试过跟随

$ gsutil ls gs://somebucket/monitor*

但两者都没有给出所需的输出


gsutil中是否有实现所需输出的方法

gsutil在使用**通配符时只会列出对象,这意味着除非路径
somebucket
中的
monitor
中有对象,否则它不会只打印
gs://somebucket/monitor
。有鉴于此,有两种方法可以直接使用JSON API(提供所需的前缀和),也可以使用不带**通配符的gsutil,通过grep/Python/
对字符串进行额外处理

可以执行此操作的脚本的快速示例:

# Say I want the objects starting with "201", but have others:
$ gsutil ls gs://my-bucket/**
gs://my-bucket/other-thing
gs://my-bucket/2015/01/01/foo.jpg
gs://my-bucket/2016/12/25/christmas.jpg

$ export PATTERN="gs://my-bucket/201"
$ gsutil ls "$(python -c "print \"${PATTERN}\"[0:\"${PATTERN}\".rfind('/')]")" | grep -o "$PATTERN[^/]*"
gs://my-bucket/2015
gs://my-bucket/2016

我后来还发现了一种简单的方法:我们只需使用
gsutil ls-d gs://sombucket/monitor*
即可获得所需的结果
# Say I want the objects starting with "201", but have others:
$ gsutil ls gs://my-bucket/**
gs://my-bucket/other-thing
gs://my-bucket/2015/01/01/foo.jpg
gs://my-bucket/2016/12/25/christmas.jpg

$ export PATTERN="gs://my-bucket/201"
$ gsutil ls "$(python -c "print \"${PATTERN}\"[0:\"${PATTERN}\".rfind('/')]")" | grep -o "$PATTERN[^/]*"
gs://my-bucket/2015
gs://my-bucket/2016