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

nav*_*mar 3 google-cloud-storage google-cloud-platform gcp-ai-platform-notebook

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

例如,在以下目录中:

gs://[bucket-name]/filesdirectory/
Run Code Online (Sandbox Code Playgroud)

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

Pie*_*vis 6

您可以使用gsutil来完成此操作,您可以将其安装在本地计算机上或直接从 Cloud 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
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

希望这可以帮助 :)