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

如何用Ruby批量重命名图片文件:提取前六位数字并添加序号

Ruby批量重命名图片:提取前六位数字并添加序号

以下是针对需求的实现方案,代码注释详细,适合Ruby新手理解:

# 替换成你的图片所在目录路径,比如 "/Users/你的用户名/Desktop/图片"
target_directory = "./my_images"

# 获取目录下所有jpg格式文件
jpg_files = Dir.glob(File.join(target_directory, "*.jpg"))

# 按文件名前六位数字分组,把同一产品的图片归为一组
grouped_images = jpg_files.group_by do |file_path|
  # 提取文件名的前6个字符作为分组标识
  File.basename(file_path)[0..5]
end

# 遍历每组图片,执行重命名
grouped_images.each do |base_name, images|
  images.each_with_index do |old_path, idx|
    # 序号从1开始,生成新文件名
    new_file_name = "#{base_name}~#{idx + 1}.jpg"
    new_file_path = File.join(target_directory, new_file_name)
    
    # 先打印预览重命名结果,确认无误后再取消下面一行的注释
    puts "即将重命名:#{File.basename(old_path)} → #{new_file_name}"
    # File.rename(old_path, new_file_path)
  end
end

关键步骤说明

  • 目录路径配置:把target_directory改成你的图片实际存放路径,注意路径格式(Windows用反斜杠,Mac/Linux用正斜杠)。
  • 文件筛选:Dir.glob只匹配.jpg结尾的文件,避免误处理其他类型文件。
  • 分组逻辑:group_by根据文件名前六位把图片分组,确保同一产品的图片放在一起排序。
  • 序号生成:each_with_index遍历每组文件,索引从0开始,所以序号加1得到~1、~2这样的后缀。

重要注意事项

  1. 先备份! 操作前务必复制一份原图片文件到其他位置,防止代码出错导致文件丢失。
  2. 预览确认:先运行代码看puts输出的重命名结果,确认逻辑正确后,再取消File.rename的注释执行实际重命名。
  3. 异常处理:如果目录里有前六位不是数字的jpg文件,代码可能会生成不符合预期的文件名,你可以添加正则判断过滤这类文件:
    # 修改group_by部分,只保留前六位是数字的文件
    grouped_images = jpg_files.group_by do |file_path|
      filename = File.basename(file_path)
      match = filename.match(/\A(\d{6})/)
      match ? match[1] : "非目标文件"
    end
    # 后续可以跳过"非目标文件"组
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 23:31:23