查找与替换 find-replace

这是一个关于使用 sd 命令行工具进行现代化、高效文件查找与替换的技能指南。它详细介绍了 sd 的基础用法、与 sed 的对比、常用替换模式、安全的批量工作流程以及特殊字符处理。适用于开发者进行代码重构、批量重命名、路径更新等文本处理任务。关键词:sd 工具,查找替换,批量替换,sed 替代,字符串替换,代码重构,命令行工具,文本处理。

DevOps 0 次安装 0 次浏览 更新于 2/28/2026

name: find-replace description: “使用 sd 进行现代化查找和替换(比 sed 更简单)和批量替换模式。触发词:sd、查找替换、批量替换、sed 替换、字符串替换、重命名。” compatibility: “需要 sd CLI 工具。安装:brew install sd (macOS) 或 cargo install sd (跨平台)。” allowed-tools: “Bash”

查找与替换

使用 sd 进行现代化查找和替换。

sd 基础

# 在文件中替换(原地修改)
sd '旧文本' '新文本' 文件.txt

# 在多个文件中替换
sd '旧文本' '新文本' *.js

# 预览而不修改(管道)
cat 文件.txt | sd '旧' '新'

sd 与 sed 对比

sed sd
sed 's/旧/新/g' sd '旧' '新'
sed -i 's/旧/新/g' sd '旧' '新' 文件
sed 's#路径/到#新/路径#g' sd '路径/到' '新/路径'

关键区别: sd 默认全局替换,没有分隔符问题。

常用模式

# 变量/函数重命名
sd '旧名称' '新名称' src/**/*.ts

# 单词边界(避免部分匹配)
sd '\b旧名称\b' '新名称' src/**/*.ts

# 导入路径更新
sd "from '../utils'" "from '@/utils'" src/**/*.ts

# 捕获组
sd 'console\.log\((.*)\)' 'logger.info($1)' src/**/*.js

安全的批量工作流

# 1. 列出受影响的文件
rg -l '旧模式' src/

# 2. 预览替换
rg '旧模式' -r '新模式' src/

# 3. 应用替换
sd '旧模式' '新模式' $(rg -l '旧模式' src/)

# 4. 验证
rg '旧模式' src/  # 应该没有返回结果
git diff              # 审查更改

特殊字符

字符 转义
. \.
* \*
[ ] \[ \]
$ \$
\ \\

提示

提示 原因
始终先用 rg -r 预览 避免错误
批量更改前使用 git 易于回滚
使用 \b 表示单词边界 避免部分匹配
引用模式 防止 shell 解释

额外资源

有关详细模式,请加载:

  • ./references/advanced-patterns.md - 正则表达式、批量工作流、真实示例