如何用Ruby将.txt文件扩展名批量修改为.HTML?
用Ruby的Dir模块批量修改文件扩展名
嘿,这事儿超简单,用Ruby的Dir模块配合文件操作API就能轻松搞定。我给你写个实用的脚本,还附带一些细节说明,帮你避免踩坑:
基础版本(仅当前目录)
这个脚本会把当前目录下所有.txt文件的扩展名改成.HTML:
# 获取当前目录下所有.txt文件 Dir.glob("*.txt").each do |file| # 提取不带扩展名的文件名 base_name = File.basename(file, ".txt") # 拼接新的文件名 new_file_name = "#{base_name}.HTML" # 执行重命名操作 File.rename(file, new_file_name) puts "已重命名:#{file} → #{new_file_name}" end
进阶版本(包含子目录+错误处理)
如果需要递归处理所有子目录里的.txt文件,并且想避免因文件已存在等问题导致脚本崩溃,可以用这个版本:
# 递归匹配所有.txt文件(包含子目录) Dir.glob("**/*.txt").each do |file| begin base_name = File.basename(file, ".txt") # 保留原文件的路径,只修改扩展名 new_file_path = File.join(File.dirname(file), "#{base_name}.HTML") # 检查新文件是否已存在,避免覆盖 if File.exist?(new_file_path) puts "跳过:#{new_file_path} 已存在" next end File.rename(file, new_file_path) puts "已重命名:#{file} → #{new_file_path}" rescue => e puts "处理#{file}时出错:#{e.message}" end end
关键知识点说明
Dir.glob("*.txt"):用通配符匹配指定模式的文件,**表示递归匹配所有子目录File.basename(file, ".txt"):第二个参数用来移除指定的扩展名,直接得到纯文件名File.dirname(file):获取文件所在的目录路径,确保重命名后文件还在原来的位置File.exist?:提前检查新文件是否存在,防止误删/覆盖已有文件
把这段代码保存成rename_ext.rb,然后在终端里运行ruby rename_ext.rb就可以啦~
内容的提问来源于stack exchange,提问作者Sdadad
相关产品推荐
相关产品推荐

