在 GCP Cloud Storage 中重命名文件名并删除方括号 []
Rename file name in GCP Cloud Storage and remove square brackets []
我们有很多视频上传到 GCP 云存储。
我们需要更改文件名并删除 [].
求教有没有好的解决办法
文件示例:
gs://xxxxxx/xxxxxx/[BlueLobster] 圣斗士星矢 The Lost Canvas - 06 [1080p].mkv
您无法重命名云存储中的文件。重命名文件等于用新名称复制文件并删除旧名称。
如果您有很多(大)文件,这将需要一些时间,但这并非不可能。
根据给定的场景,您想要使用 ¨[]¨ 批量重命名所有文件名。基于此 documentation, gsutil interprets these characters as wildcards. gsutil 目前不支持此功能。
有一种方法可以处理此类请求,方法是使用自定义脚本重命名所有带有“[”的文件。
您可以使用任何具有 Cloud Storage client libraries 的编程语言。对于此说明,我们将使用 Python 作为自定义脚本。
在你的 Google Cloud Console, Click the Activate Cloud Shell on the top right of the Google Cloud Console beside the question mark sign. For more information, you may refer here.
在您的云 Shell 上,使用此命令安装 Python 客户端库:
pip install --upgrade google-cloud-storage
更多信息,请参考此documentation。
安装客户端库后,单击打开编辑器[=76=启动云Shell编辑器 ] 在云 Shell 的右上角。您可以参考 here 了解更多信息。
在您的 Cloud Shell Editor 上,单击 File 菜单并选择 新文件。将其命名为 script.py。单击确定。
此代码假定您的存储桶中的所有对象都与您提供的示例具有相同的名称。:
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)
将 ¨my_bucket¨ 的内容更改为您的存储桶名称。
单击文件然后保存或者您可以直接按Ctrl + S.
单击 Cloud Shell 编辑器右上角的 打开终端 返回终端。
将此代码复制并粘贴到编辑器中:
python script.py
- 到 运行 脚本,按 Enter 键。
- 带括号的文件现在已重命名。
文件未在后端重命名。在幕后,它更像是用一个新名称重写,这是由于 object immutability。这只会用新名称复制旧文件,然后删除旧文件。
我们有很多视频上传到 GCP 云存储。 我们需要更改文件名并删除 [].
求教有没有好的解决办法
文件示例: gs://xxxxxx/xxxxxx/[BlueLobster] 圣斗士星矢 The Lost Canvas - 06 [1080p].mkv
您无法重命名云存储中的文件。重命名文件等于用新名称复制文件并删除旧名称。
如果您有很多(大)文件,这将需要一些时间,但这并非不可能。
根据给定的场景,您想要使用 ¨[]¨ 批量重命名所有文件名。基于此 documentation, gsutil interprets these characters as wildcards. gsutil 目前不支持此功能。
有一种方法可以处理此类请求,方法是使用自定义脚本重命名所有带有“[”的文件。
您可以使用任何具有 Cloud Storage client libraries 的编程语言。对于此说明,我们将使用 Python 作为自定义脚本。
在你的 Google Cloud Console, Click the Activate Cloud Shell on the top right of the Google Cloud Console beside the question mark sign. For more information, you may refer here.
在您的云 Shell 上,使用此命令安装 Python 客户端库:
pip install --upgrade google-cloud-storage
更多信息,请参考此documentation。
安装客户端库后,单击打开编辑器[=76=启动云Shell编辑器 ] 在云 Shell 的右上角。您可以参考 here 了解更多信息。
在您的 Cloud Shell Editor 上,单击 File 菜单并选择 新文件。将其命名为 script.py。单击确定。
此代码假定您的存储桶中的所有对象都与您提供的示例具有相同的名称。:
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)
将 ¨my_bucket¨ 的内容更改为您的存储桶名称。
单击文件然后保存或者您可以直接按Ctrl + S.
单击 Cloud Shell 编辑器右上角的 打开终端 返回终端。
将此代码复制并粘贴到编辑器中:
python script.py
- 到 运行 脚本,按 Enter 键。
- 带括号的文件现在已重命名。
文件未在后端重命名。在幕后,它更像是用一个新名称重写,这是由于 object immutability。这只会用新名称复制旧文件,然后删除旧文件。