アプリケーション全体で、特定文字列を探し出すには?

とあるパッケージングされたスクリプトがあります。数十のフォルダに全体で数百のモジュール(php)が入ってます。
全体のモジュールから、とある文字列をみつける方法を教えてください。
hogehogeという文字列をみつけだしhagehageという文字列に置換したいのです。
数百のモジュールがあり、ひとつひとつから見つけ出すのは容易ではありません。

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2011/03/10 07:15:57
  • 終了:2011/03/10 11:39:07

回答(4件)

id:vow No.1

ghost回答回数21ベストアンサー獲得回数92011/03/10 07:53:09

ポイント29pt

探すだけなら grep -F "hogehoge" -R /path/to/modules/ で終わりですが、目的が置換ならば:

find /path/to/modules/ -type f -name "*.php" -exec sed -e "s/hogehoge/hagehage/" -i '{}' \+

斜体部分は実際の値に書き換え)

ただしこの手の作業には誤爆がつきものなので、先に全体のコピーをとっておいて実施前後の diff を確認することをおすすめします。細かいオプション等の調整は太字部分の項目のマニュアルを参照のこと。

id:yo-jiro-11

参考になりました。ありがとうございます。

2011/03/10 11:34:28
id:taknt No.2

きゃづみぃ回答回数13481ベストアンサー獲得回数11982011/03/10 08:39:09

ポイント24pt

http://hide.maruo.co.jp/software/hidemaru7/new3.html

Ver7以上の秀丸をインストールして grepで一括置換をすればいいです。

なお 置換する前に ちゃんと バックアップと ただのgrepで検索されることを確認してから実行したらいいでしょう。

id:yo-jiro-11

参考になりました。ありがとうございます 。

2011/03/10 11:34:40
id:Galapagos No.3

Galapagos回答回数963ベストアンサー獲得回数892011/03/10 09:36:17

ポイント27pt

find, xargs, grep, sed を使って以下のようにしてみてください。

find . -name '*.php' | xargs grep -l '/hogehoge/hagehage/' | xargs sed -i.bak 's/hogehoge/hagehage/g'
id:yo-jiro-11

参考になりました。ありがとうございます。

2011/03/10 11:34:53
id:tama213 No.4

tama213回答回数486ベストアンサー獲得回数302011/03/10 10:50:32

ポイント10pt

>全体のモジュールから、とある文字列をみつける方法を教えてください。

テキストファイルの場合、grepを使えば簡単です。

id:yo-jiro-11

ありがとうございます。

2011/03/10 11:35:26
  • id:vow
    ああ、他回答を見て忘れ物に気がついた。。。

    hogeが一行の中に複数回出現する場合があり、その全てをhageにする場合は sed の s/// の最後に g を付けないといけません。(この点はGalapagos氏のが正しい)

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません