如何检索云存储桶中的最新文件?
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
- 列出目录
- 按字母顺序排序(可能没有必要)
- 取最后一行
- 用“/”分隔符对其进行标记
- 得到第4个token,也就是目录名
这可以用 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
- 列出目录
- 按字母顺序排序(可能没有必要)
- 取最后一行
- 用“/”分隔符对其进行标记
- 得到第4个token,也就是目录名