You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GCS多文件夹下批量重命名GeoTiff文件:修正.tif.tif后缀为.tif

解决GCS中批量重命名.tif.tif文件为.tif的问题

错误原因

你之前的命令报错是因为:

  • gsutil mv不支持通过**通配符配合\1反向引用的方式批量替换文件名,它无法解析目标路径中的**和\1,会认为目标是一个不明确、不唯一的URL,因此抛出CommandException。

正确的批量重命名方法

方法1:Bash循环逐个重命名(最稳妥)

通过gsutil ls列出所有需要修改的文件,再用bash循环逐个处理重命名:

# 遍历所有.tif.tif文件,逐个重命名为.tif
gsutil ls "gs://bucket/folders/more_folders/even_more_folders/here_4_folders_COPY/**/*.tif.tif" | while read -r old_file; do
  new_file="${old_file%.tif.tif}.tif"
  gsutil mv "$old_file" "$new_file"
done
  • ${old_file%.tif.tif}是bash参数扩展语法,作用是移除字符串末尾的.tif.tif后缀,再拼接.tif得到正确的文件名。
  • 如果需要并行处理提升速度,可以在循环内控制并发数(比如每10个任务并行):
# 并行处理,控制并发数为10
count=0
gsutil ls "gs://bucket/folders/more_folders/even_more_folders/here_4_folders_COPY/**/*.tif.tif" | while read -r old_file; do
  new_file="${old_file%.tif.tif}.tif"
  gsutil mv "$old_file" "$new_file" &
  # 每10个任务等待一次,避免并发过高触发限流
  ((count++)) && ((count%10==0)) && wait
done
wait

方法2:结合xargs并行处理

用xargs实现批量并行重命名,适合文件数量较多的场景:

gsutil ls "gs://bucket/folders/more_folders/even_more_folders/here_4_folders_COPY/**/*.tif.tif" | xargs -I {} -P 10 gsutil mv {} "$(dirname {})/$(basename {} .tif.tif).tif"
  • -P 10表示同时运行10个并行任务,可根据GCS配额调整数值;
  • dirname {}获取文件所在目录,basename {} .tif.tif移除.tif.tif后缀,再拼接.tif得到新文件名。

注意:GCS有请求频率限制,并行数不要设置过高,否则可能触发限流报错。

内容的提问来源于stack exchange,提问作者Reut

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 15:13:27