我们最近将所有产品图片从我们的网站移至 Google Cloud Storage。由于过去的命名政策不佳,文件名的大小写(小写、大写)并不总是与我们产品数据库中列出的文件名一致。这对网站来说从来都不是问题,但对于 GCS 来说,现在成了问题。
我看到的最快解决方法是强制网站将所有文件名改为小写。但这意味着我必须将 Cloud Storage 中的所有文件名(包括扩展名)更改为小写。我一直在尝试使用 gsutil,但到目前为止无法做到这一点。
有人知道是否有命令可以做到这一点吗?
TL;DR:哪个 gsutil 命令会将所有文件名更改为小写?
感谢您的帮助。
答案1
这云存储客户端库可以为您完成这项工作。
- 在 Python 中,首先使用以下命令安装库:
pip install --upgrade google-cloud-storage
- 创建一个服务帐户,下载服务帐号密钥
JSON
文件并设置环境变量:
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-file.json"
使用来自的代码示例这里,你可以构建类似这样的东西(已经测试过了):
# Imports the Google Cloud client library from google.cloud import storage def rename_blobs(bucket_name): """Renames a group of blobs.""" #storage client instance storage_client = storage.Client() #get bucket by name bucket = storage_client.get_bucket(bucket_name) #list files stored in bucket all_blobs = bucket.list_blobs() #Renaming all files to lowercase: for blob in all_blobs: new_name = str(blob.name).lower() new_blob = bucket.rename_blob(blob, new_name) print('Blob {} has been renamed to {}'.format( blob.name, new_blob.name)) rename_blobs("my-new-bucket")
答案2
您可以使用的一个解决方法是使用以下命令将存储桶安装到 Linux 机器上GCSF 线然后在 for 循环中使用 tr [:upper:] [:lower:] 来更改对象名称,例如:
for i in *; do mv $i `echo $i | tr [:upper:] [:lower:]`; done