是否可以使用gsutil (或其他工具)在Google Cloud Storage上批量重命名对象?我正在尝试想办法将一堆图片从*.jpg重命名为*.JPG。
发布于 2019-10-08 00:05:59
以下是在bash中完成此操作的本机方法,下面逐行对代码进行解释:
gsutil ls gs://bucket_name/*.JPG > src-rename-list.txt
sed 's/\.JPG/\.jpg/g' src-rename-list.txt > dest-rename-list.txt
paste -d ' ' src-rename-list.txt dest-rename-list.txt | sed -e 's/^/gsutil\ mv\ /' | while read line; do bash -c "$line"; done
rm src-rename-list.txt; rm dest-rename-list.txt
该解决方案推送两个列表,一个用于源文件,另一个用于目标文件(将在"gsutil mv“命令中使用):
gsutil ls gs://bucket_name/*.JPG > src-rename-list.txt
sed 's/\.JPG/\.jpg/g' src-rename-list.txt > dest-rename-list.txt
使用以下代码逐行连接"gsutil mv“行和这两个文件:
paste -d ' ' src-rename-list.txt dest-rename-list.txt | sed -e 's/^/gsutil\ mv\ /'
然后在while循环中运行每一行: while read line;do bash -c "$line";do
最后,清理并删除创建的文件:
rm src-rename-list.txt; rm dest-rename-list.txt
上面的内容已经在一个工作的Google存储桶上进行了测试。
发布于 2020-03-15 20:02:58
gsutil 不支持并行化和批量复制/重命名。
你有两个选择:
如果您使用 GNU Parallel,最好部署一个新实例来执行批量复制/重命名操作:
gs://origin_bucket/path/file gs://dest_bucket/new_path/new_filename
sudo apt install parallel
gcloud auth login
执行复制(gsutil cp)或移动(gsutil mv)操作
parallel -j 20 --colsep ' ' gsutil mv {1} {2} :::: file_with_source_destination_uris.txt
这将使gsutil cp操作并行运行20次。
发布于 2014-11-27 16:55:20
https://stackoverflow.com/questions/27166441
复制相似问题