如何检索云存储桶中的最新文件?

How to retrieve the most recent file in cloud storage bucket?

这可以用 gsutil 完成吗?

https://cloud.google.com/storage/docs/gsutil/commands/ls 似乎没有提到任何排序功能 - 仅按日期过滤 - 这对我的用例不起作用。

你好,这似乎仍然不存在,但是在这个post中有一个解决方案:enter link description here

使用的命令是这个:

gsutil ls -l gs://[bucket-name]/ | sort -k 2

因为它允许您按日期过滤,所以您可以获得存储桶中的最新结果,并在需要时使用另一个管道恢复最后一行。

gsutil ls -l gs://<bucket-name> | sort -k 2 | tail -n 2 | head -1 | cut -d ' ' -f 7

不过,如果桶中的对象少于两个,它将无法正常工作

通过使用来自主机的 gsutil 这将填充响应数组:

response=(`gsutil ls -l gs://some-bucket-name|sort -k 2|tail -2|head -1`)

或通过 gsutil 来自 docker 容器:

response=(`docker run --name some-container-name --rm --volumes-from gcloud-config -it google/cloud-sdk:latest gsutil ls -l gs://some-bucket-name|sort -k 2|tail -2|head -1`)

之后,为了得到整个响应,运行:

echo ${response[@]}

将打印例如:

33 2021-08-11T09:24:55Z gs://some-bucket-name/filename-37.txt

或者从响应中获取单独的信息,(例如文件名)

echo ${response[2]}

将只打印文件名

gs://some-bucket-name/filename-37.txt

对于我的用例,我想在我的存储桶中找到最新的目录。我按升序对它们进行编号(前导零),所以我需要得到最新的一个是这样的:

gsutil ls -l gs://[bucket-name] | sort | tail -n 1 | cut -d '/' -f 4
  1. 列出目录
  2. 按字母顺序排序(可能没有必要)
  3. 取最后一行
  4. 用“/”分隔符对其进行标记
  5. 得到第4个token,也就是目录名