renameコマンドでファイル名の一括置換

プログラミングをしている途中で、クラス名などの名前付けがいまいちだったな、と思う時があります。
そういうときは、エディタを使ってクラス名や変数名を置換して、より良い名前付けに変えたりします。

ファイル名の置換はどうするか?

しかしながら、クラス名はファイルの中だけでなく、ファイル自体の名前としても使われていたりします。
ファイル名を一括で置換する方法はないかと調べてみると、renameというコマンドがあるそうです。
スクリーンショット 2014-10-24 20.20.03
UNIXの部屋 コマンド検索:rename (*BSD/Linux)
Linuxは標準で入っていると書かれていますが、Mac OS Xの場合はないようなので、Homebrewからインストールしました。

$ brew install rename
==> Downloading https://github.com/ap/rename/archive/v1.600.tar.gz
######################################################################## 100.0%
==> pod2man rename rename.1

ただこれでインストールされるのは、上記のページで紹介されているrenameコマンドとは違う、別のrenmaeコマンドのようです。

置換してみる

このrenameコマンドは正規表現で置換ができるそうです。

rename 's/User/Company/;' UserModel.php

一括で置換する場合は、findコマンドとかと組み合わせれば良いと思われます。

find ./ -name '*User*' -exec rename 's/User/Company/;' {} \;

リファクタリングが楽になります。

タイトルとURLをコピーしました