user icon

Mac で複数ファイルの一括置換ってどうしてます?

Windows だと Devas ってソフトでバッチリだったんですが、Mac ではいいソフトを見つけることができずにいます。

サブディレクトリ内のファイルも含めてまとめて置換は、今はターミナルで次の手順でやってます。

まず、find で特定拡張子のファイルリストをとって xargs で grep にわたして置換したい単語を検索。

$ find . -name '*.拡張子' | xargs grep 置換したい単語 

で、grepに -l オプションつけて置換したい単語が含まれるファイルリストをとって xargs で  perl にわたして置換。

$ find . -name '*.拡張子' | xargs grep -l 置換したい単語 | xargs perl -p -i.bak -e 's/置換したい単語/置換後の単語/g'

perl の -i オプションに .bak と付けてるので元ファイルは bak という拡張子で残ります。
「perlだけでやればいいじゃん」と言われそうですが、いきなりやるのは不安なのと置換が行われてないファイルまで全てタイムスタンプが変わったりしたのでこの方法に落ち着きました。

で、置換されたファイルの内容確認して問題なければbakファイル削除。

$ find . -name '*.bak'

で確認して、

$ find . -name '*.bak' | xargs rm

完了〜。 xargs ラヴ♡

Unix系なら他でも使えると思います。

いいっちゃいいんですが、記憶力がないので思い出せる気がしません。historyがあふれるとオレ終了って感じ(なのでメモという意味もあり)。

ちなみに私がターミナルで一番使うコマンドはブッチギリで

$ history | grep コマンド名

history ラヴ♡♡

Facebooktwitterlinkedintumblrmail

タグ: ,

Trackback

Comment

util-linux-ngに含まれるrename.cをgccでコンパイルして使ってます

index.php -> index.php5
index2.php -> index.php5

であれば

rename php php5 index*

とかで一発ですよ!

情報ありがとうございます。
ファイル名の置換も良くありますね。

  • 3.
  • nobio
  • 2012/05/02 20:17

Jedit X です。

おー。マルチファイル検索があるんですね > Jedit X
よさそう。

名前
E-mail
URL
コメント

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)