gsutil / gcloud storage按限制和分页列出文件



是否有办法从GCS桶中列出有限制的文件?

假设我的桶里有2k个对象。但是当我执行gsutil时,我只需要前5个对象,而不是全部。如何做到这一点。

还有分页吗?Gsutil ls gs://my-bucket/test_file_03102021* 2>/dev/null | grep -i ";| |:

gsutil help ls来看,gsutil目前没有限制从ls调用返回的项目数量的选项。

虽然您可以将结果管道到awk以仅获得前5项,但如果您的桶中有很多对象,那么这将是相当浪费的(因为gsutil将继续进行分页HTTP调用,直到它列出所有N个对象)。

如果您需要在具有许多对象的存储桶上例行地执行此操作,您最好编写一个使用GCS客户端库之一的短脚本。作为一个示例,请查看google-cloud-storage Python库——具体来说,请参阅list_blobs方法,该方法接受一个max_results参数。

当您直接使用API时,可以使用分页。如果您只需要前5个对象,并且使用gsutil,则必须等待数百(数千,数百万,…)个文件的完整答案才能获得前5个对象。

如果你使用API,你可以这样做

curl -H "Authorization: Bearer $(gcloud auth print-access-token)"  
"https://storage.googleapis.com/storage/v1/b/<BUCKET_NAME>/o?alt=json&&maxResults=5"  
| jq .items[].name

当然,您可以更改最大结果大小

过滤时也可以包含前缀。更多细节见API文档

最新更新