是否有办法从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文档