$shibayu36->blog;

クラスター株式会社のソフトウェアエンジニアです。エンジニアリングや読書などについて書いています。

ファイル名検索して一斉ファイルリネームする

例えばリファクタリングしたいときにクラス名を一斉に変える時がある。その時に対応するファイル・ディレクトリ名を一斉置換したい時がある。

diredの機能であるfind-name-diredと、dired中で置換を行えるwdiredを組み合わせたら出来るということが分かった。

  1. M-x find-name-dired (word)
  2. wdired-change-to-wdired-mode
  3. 置換(query-replace)
  4. 保存


find-name-dired

find-name-diredはfind-dired.elに含まれる機能で、emacsから名前でfind出来るやつ。標準で付いているのでインストールする必要はない。

またもっといろいろfindしたい時は、find-diredしたら良い。findのoptionを渡せる。

wdired

wdiredも24.3現在では標準で入っているようでした。紹介はファイルのリネームが超簡単 wdired / grep の検索結果を直接変更できる moccur-edit. - gan2 の Ruby 勉強日記あたりを参照に。

設定方法、keybindの例は以下のとおり。

;; wdiredの設定
(require 'wdired)
(define-key dired-mode-map "r" 'wdired-change-to-wdired-mode)

これでdiredでrを押したら編集できるようになって、C-x C-sでセーブ出来る。