首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在GCP云存储中重命名文件名并删除方括号[]

在GCP云存储中重命名文件名并删除方括号[]
EN

Stack Overflow用户
提问于 2021-09-24 06:31:42
回答 2查看 1.1K关注 0票数 1

我们有很多视频上传到GCP云存储。我们需要更改文件名并删除[]。

问是否有一个好的解决方案。

文件示例: gs://xxxxxx/xxxxxx/BlueLobster Saint丢失的画布- 06 1080p.mkv

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-24 09:42:58

根据给定的场景,您希望大容量地重命名所有文件名,并将所有文件名重新命名。基于这个文档,gsutil将这些字符解释为通配符。古提尔目前不支持这一点。

有一种方法可以通过使用自定义脚本将所有文件重命名为“[”来处理此类请求。

您可以使用任何具有云存储客户端库的编程语言。对于本说明,我们将使用Python作为自定义脚本。

  1. 在您的Google控制台上,单击Google控制台右上角的Activate,在问号旁边单击。有关更多信息,请参考这里
  2. 在Cloud上,使用以下命令安装Python客户端库:
代码语言:javascript
复制
pip install --upgrade google-cloud-storage

有关更多信息,请参阅此文档

  1. 安装客户端库后,单击Cloud顶部的Open,启动Cloud编辑器。您可以参考这里获得更多信息。
  2. Cloud编辑器上,单击File菜单并选择NewFile。命名为script.py。单击Ok
  3. 此代码假设桶上的所有对象都具有与您提供的示例相同的名称:
代码语言:javascript
复制
import re
from google.cloud import storage

storage_client = storage.Client()

bucket_name = "my_bucket"
bucket = storage_client.bucket(bucket_name)

storage_client = storage.Client()

blobs = storage_client.list_blobs(bucket_name)
pattern = r"[\([{})\]]"
for blob in blobs:
    out_var = blob.name
    fixed_var = re.sub(pattern, '', blob.name)
    print(out_var + " " + fixed_var)
    new_blob = bucket.rename_blob(blob, fixed_var)
  1. 将“”、“my_bucket”、“”的内容更改为桶名。
  2. 单击File,然后单击Save,或者只需按Ctrl + S即可。
  3. 单击Cloud编辑器右上部分的打开终端返回到终端。
  4. 复制并粘贴此代码到编辑器:
代码语言:javascript
复制
python script.py
  1. 要运行脚本,请按Enter键。
  2. 现在重命名带有括号的文件。

这些文件不会在后端重命名。在引擎盖下,更多的是用一个新的名称重写它,这是由于对象不变性。这将只复制具有新名称的旧文件,然后删除旧文件。

票数 1
EN

Stack Overflow用户

发布于 2021-09-24 08:00:36

不能在云存储中重命名文件。重命名文件等于用新名称复制文件并删除旧名。

如果您有大量(大型)文件,这将需要时间,但这不是不可能的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69310509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档