Ruby 文件批处理工具
这个项目会批量重命名当前目录下的 .txt 文件,为它们添加前缀。批量文件操作很实用,也很危险,所以我们会先加入 dry-run 模式。
需求
运行:
ruby rename_txt.rb old --dry-run
输出计划重命名的文件,但不真正执行。
去掉 --dry-run 后才真正重命名。
完整代码
rename_txt.rb
prefix = ARGV[0]
dry_run = ARGV.include?("--dry-run")
unless prefix
warn "usage: ruby rename_txt.rb <prefix> [--dry-run]"
exit 1
end
paths = Dir.glob("*.txt")
if paths.empty?
puts "no .txt files found"
exit 0
end
paths.each do |path|
new_path = "#{prefix}_#{path}"
if File.exist?(new_path)
warn "skip: #{new_path} already exists"
next
end
puts "#{path} -> #{new_path}"
File.rename(path, new_path) unless dry_run
end
为什么需要 dry-run
批量重命名、删除、移动文件都可能造成数据损失。dry-run 先打印计划,让 你确认没有问题后再执行。
注意
真实批处理脚本建议先在测试目录运行,并确认 git 或备份状态。
可以继续改进
- 支持递归目录。
- 支持正则替换。
- 写入操作日志。
- 添加撤销文件。
- 使用
OptionParser管理参数。
小结
Ruby 写批处理脚本很顺手,但越是短脚本越要注意安全边界。先 dry-run,再执行,这是好习惯。