3

如何更改 GCP 云存储中多个文件的扩展名?

例如,在以下目录中:

gs://[bucket-name]/filesdirectory/

我想将扩展名为.ipynb的文件更改为.py

4

2 回答 2

4

您可以使用gsutil来完成此操作,您可以将其安装在本地计算机上或直接从云 shell 中使用。

gsutil 使用的命令与 linux CLI 非常相似,您可以使用 gsutil mv 命令来实现此目的,但由于您不能在此处使用通配符,因此您必须使用类似以下的内容:

IFS=$'\n'
gsutil ls gs://your-bucket/*.ipynb| while read x; do gsutil mv $x $(echo $x | sed "s/.ipynb/.py/g"); done

我不是 shell 专家,所以可能这可以改进,但这里有一个解释:

  • gsutil ls 使用通配符返回要重命名的文件
  • 遍历文件并将结果存储到变量中
  • 使用 gsutil mv + sed 放置文件扩展名并根据需要重写文件

这就像完全“重写”文件,因为 gcs 对象是不可变的,因此您可能应该记住一些注意事项,尽管这可能不是您的情况:

  • 如果您为这些文件指定了 ACL 规则,则必须使用 -p 标志将它们传递给新文件
  • 这些是 GCS 的操作,意味着成本取决于您的存储类别。(由于 mv 实际上是复制 + 删除,如果您在近线或冷线,您可能需要额外的提前删除费用)

希望这可以帮助 :)

于 2019-12-26T11:20:11.547 回答
0

文档中所述,您可以使用控制台、GSutil 命令、代码或 REST APIS 重命名 GCS 存储桶中的文件。

您应该使用的 Gsutil 命令如下:

gsutil mv gs://[BUCKET_NAME]/[OLD_OBJECT_NAME] gs://[BUCKET_NAME]/[NEW_OBJECT_NAME]

此外,如果您想更改多个文件,我建议您使用脚本来为您需要更改的每个文件执行此操作。

于 2019-12-26T10:52:32.427 回答