将文件名转换为小写 [Google Cloud Storage]

将文件名转换为小写 [Google Cloud Storage]

我们最近将所有产品图片从我们的网站移至 Google Cloud Storage。由于过去的命名政策不佳,文件名的大小写(小写、大写)并不总是与我们产品数据库中列出的文件名一致。这对网站来说从来都不是问题,但对于 GCS 来说,现在成了问题。

我看到的最快解决方法是强制网站将所有文件名改为小写。但这意味着我必须将 Cloud Storage 中的所有文件名(包括扩展名)更改为小写。我一直在尝试使用 gsutil,但到目前为止无法做到这一点。

有人知道是否有命令可以做到这一点吗?

TL;DR:哪个 gsutil 命令会将所有文件名更改为小写?

感谢您的帮助。

答案1

云存储客户端库可以为您完成这项工作。

  1. 在 Python 中,首先使用以下命令安装库:

pip install --upgrade google-cloud-storage

  1. 创建一个服务帐户,下载服务帐号密钥JSON文件并设置环境变量:

export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-file.json"

  1. 使用来自的代码示例这里,你可以构建类似这样的东西(已经测试过了):

    # 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

相关内容