find-replace について
find-replaceは、sdでファイル内のテキストを検索・置換するコマンドラインスキルです。コードやテキストの編集向けに、変更の事前確認や部分一致を避ける方法も案内します。
主な機能
- 01sdによるグローバル置換
- 02複数ファイルの一括置換
- 03事前確認と安全な一括処理
- 04正規表現の単語境界指定
- 05特殊文字のエスケープ
活用シーン
- 01ソースファイル間で変数や関数を改名
- 02プロジェクトのインポートパスを更新
- 03置換を適用する前に結果を確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ 0xdarkmatter/ claude-mods --skill find-replaceインストール後、Claude Code で/find-replaceを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/.gitkeepreferences/advanced-patterns.mdscripts/.gitkeep詳細
検索と置換
sd を使った最新の検索と置換です。
sd の基本
# Replace in file (in-place)
sd 'oldText' 'newText' file.txt
# Replace in multiple files
sd 'oldText' 'newText' *.js
# Preview without changing (pipe)
cat file.txt | sd 'old' 'new'
sd と sed の比較
| sed | sd |
|---|---|
sed 's/old/new/g' | sd 'old' 'new' |
sed -i 's/old/new/g' | sd 'old' 'new' file |
sed 's#path/to#new/path#g' | sd 'path/to' 'new/path' |
主な違い: sd はデフォルトで全件を対象とし、区切り文字に関する問題もありません。
よく使うパターン
# Variable/function rename
sd 'oldName' 'newName' src/**/*.ts
# Word boundaries (avoid partial matches)
sd '\boldName\b' 'newName' src/**/*.ts
# Import path update
sd "from '../utils'" "from '@/utils'" src/**/*.ts
# Capture groups
sd 'console\.log\((.*)\)' 'logger.info($1)' src/**/*.js
安全な一括処理のワークフロー
# 1. List affected files
rg -l 'oldPattern' src/
# 2. Preview replacements
rg 'oldPattern' -r 'newPattern' src/
# 3. Apply
sd 'oldPattern' 'newPattern' $(rg -l 'oldPattern' src/)
# 4. Verify
rg 'oldPattern' src/ # Should return nothing
git diff # Review changes
特殊文字
| 文字 | エスケープ |
|---|---|
. | \. |
* | \* |
[ ] | \[ \] |
$ | \$ |
\ | \\ |
ヒント
| ヒント | 理由 |
|---|---|
まず rg -r で必ずプレビューする | ミスを防げます |
| 一括変更の前に git を使う | 簡単にロールバックできます |
単語境界には \b を使う | 部分一致を防げます |
| パターンを引用符で囲む | シェルによる解釈を防げます |
参考資料
詳細なパターンについては、次を読み込んでください:
./references/advanced-patterns.md- 正規表現、一括処理のワークフロー、実例
コメント
Markdown 対応