如何用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这样的后缀。
重要注意事项
- 先备份! 操作前务必复制一份原图片文件到其他位置,防止代码出错导致文件丢失。
- 预览确认:先运行代码看
puts输出的重命名结果,确认逻辑正确后,再取消File.rename的注释执行实际重命名。 - 异常处理:如果目录里有前六位不是数字的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
相关产品推荐
相关产品推荐

