Sublime Text 无内置批量改后缀功能,需依赖 SideBarEnhancements 插件或命令行工具;插件需先装 Package Control 并配置 Batch Rename,命令行则依系统选用 rename、for 或 PowerShell 实现精准替换。

Sublime Text 里没有内置批量改后缀功能
别找 File → Rename Extension 或类似菜单项——它根本不存在。Sublime Text 的核心定位是代码编辑器,不是文件管理器,所有「重命名文件」操作都得靠外部工具或插件辅助完成。直接在侧边栏右键改名?可以,但一个一个点开改,和用系统资源管理器没区别,谈不上“批量”。
用 SideBarEnhancements 插件实现右键批量改后缀
这是最贴近你直觉操作的方案:保留 Sublime 界面,右键选中多个文件,一键改扩展名。但要注意几个硬性前提:
- 必须先装
Package Control(没装的话搜 “Install Package Control Sublime” 两分钟搞定) - 再通过
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS)调出命令面板,输入Package Control: Install Package,回车后搜SideBarEnhancements并安装 - 重启 Sublime(部分版本需要),确保侧边栏右键菜单出现
Batch Rename...选项
选中多个文件 → 右键 → Batch Rename... → 输入新后缀(比如 .ts),注意不要带点,插件会自动补全;如果输成 .js,它会变成 ..js,导致错误。
命令行才是真批量:用 rename 或 for 一行搞定
如果你改的是项目里一堆 .js 要变 .ts,或者日志文件 .log.20240101 统一删掉日期,命令行比任何 GUI 都快、可控、可复现。Windows 和 macOS/Linux 命令不同,别混用:
- macOS/Linux(GNU rename 支持正则):
rename 's/\.js$/.ts/' *.js - macOS(默认 BSD rename,不支持正则):用
for f in *.js; do mv "$f" "${f%.js}.ts"; done - Windows PowerShell:
Dir *.js | Rename-Item -NewName { $_.Name -replace '\.js$', '.ts' }
关键点:通配符 * 匹配范围由当前 shell 决定,别在 Sublime 工程根目录下盲目运行,先 ls *.old 确认要改哪些;${f%.js} 是 Bash 参数展开,删掉结尾 .js,不是所有 shell 都支持,PowerShell 得用 -replace。
别用 Sublime 自带的「查找替换」改文件名
有人试过打开多个标签页,全选文件名 → Ctrl+H 替换后缀?这只会改文件内容里的字符串,不是文件名本身。更危险的是:如果文件里有 require('./utils.js') 这种引用,你一替换成 .ts,代码就坏了,而文件磁盘名字纹丝不动。这种“伪批量”看似省事,实则制造隐性错误,尤其对 TypeScript 项目,类型检查会立刻报 Cannot find module './utils.ts'。
真正改名和改引用是两件事:先用上面方法改磁盘文件名,再用 Sublime 的 Find in Files(Ctrl+Shift+F)全局搜 .js,人工确认哪些是路径引用,再决定是否替换——不能无脑全替。

















