如何更改 GCP 云存储中多个文件的扩展名?
例如,在以下目录中:
gs://[bucket-name]/filesdirectory/
我想将扩展名为 .ipynb 的文件更改为 .py。
最佳答案
您可以使用 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
我不是 shell 专家,所以这可能可以改进,但这里有一个解释:
- gsutil ls 使用通配符返回要重命名的文件
- 遍历文件并将结果存储到变量中
- 使用 gsutil mv + sed 放置文件扩展名并根据需要重写文件
这就像完全“重写”文件,因为 gcs 对象是不可变的,因此您可能应该牢记一些注意事项,尽管这可能不是您的情况:
- 如果您为这些文件指定了 ACL 规则,则必须使用 -p 标志将它们传递给新文件
- 这些是 GCS 的操作,意味着基于您的存储类别的成本。 (因为mv其实就是copy+delete,如果你在 nearline 或 coldline,您可能需要支付额外的提前删除费用)
希望这有帮助:)
关于google-cloud-platform - 如何更改云存储中多个文件的扩展名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59486589/