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

如何用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:06:23