Sublime Text 无法直接批量修改文件后缀,所有方案均依赖系统命令;SideBarEnhancements 插件适合小批量简单替换,PowerShell(Windows)和 shell 循环(macOS/Linux)更可靠,改后需用 Sublime 全局搜索替换代码中引用。

Sublime Text 本身不能批量修改文件后缀——它不操作文件系统,只编辑内容。所有“批量改后缀”方案,本质都是调用 ren、mv 或 Rename-Item 等系统命令,Sublime 只负责生成、编辑或触发它们。
SideBarEnhancements 插件右键批量改后缀最省事
适合小批量、规则简单(如全部 .js → .ts)、想在 Sublime 界面内完成的场景。但必须满足几个硬条件:
- 已安装
Package Control,并通过它装好SideBarEnhancements - 重启 Sublime 后,侧边栏多选多个文件 → 右键出现
Batch Rename(不是Rename) - 输入新后缀时不要带点,比如填
ts,不是.ts;填js会被变成.js,但填.js会变成..js - 插件不会校验目标后缀是否已被占用,若
file.ts已存在,会静默失败,原文件不动
PowerShell 一行命令改后缀最可靠(Windows)
比批处理 ren 更健壮,支持通配符、正则、错误提示,且能跨目录匹配。Sublime 可作为轻量脚本编辑器使用:
- 在 Sublime 新建文件,保存为
rename.ps1,写入:Get-ChildItem "C:\myproject" -Filter "*.log" | Rename-Item -NewName { $_.Name -replace '\.log$', '.log.bak' } - 执行前必须绕过策略限制:
powershell -ExecutionPolicy Bypass -File .\rename.ps1 - 加
-WhatIf参数可预览效果,不真执行:| Rename-Item -NewName {...} -WhatIf - 注意:
-Filter比-Include快,但只支持简单通配符;复杂匹配必须用Where-Object
macOS/Linux 用 shell 循环 + mv 最直接
不依赖额外工具,终端里一行搞定,Sublime 只需帮你写/测命令。关键点在参数展开和引号:
- Bash 中改
.old→.new:for f in *.old; do mv "$f" "${f%.old}.new"; done -
${f%.old}是 Bash 参数展开,删掉结尾.old;$f不加引号遇空格会崩,必须写成"$f" - zsh 用户可用
zmv(需autoload -U zmv),但默认没装,不如原生命令通用 - 别在项目根目录盲目跑
for f in *——先ls *.old确认范围,避免误改package.json这类文件
改完后必须同步更新代码里的引用
文件名改了,但 import utils from './utils.js' 还是旧的,TypeScript 或 Webpack 会立刻报错。这时才轮到 Sublime 的强项:
- 按
Ctrl+Shift+F(Windows)打开Find in Files -
Find What:\.js(?=")(正则,只匹配被双引号包围的.js) -
Where: 填src/**/*.ts或具体目录,避开node_modules - 先点
Find All查看所有匹配上下文,确认无误再点Replace All - 别忘了检查注释里写的路径、配置文件中的字符串、甚至 Markdown 文档里的链接
真正容易被忽略的是:重命名操作本身没有原子性,也没有事务回滚。一个文件被其他进程锁住,整条 for 循环就中断;PowerShell 脚本里漏了个 -Force,遇到只读文件就停住。与其追求“一键”,不如分三步走:预览(-WhatIf / ls)、小范围试(改 2 个文件)、再全量执行。Sublime 在这个流程里,永远是辅助者,不是执行者。











