【Linux】ファイル内の文字列を検索する
よく使うんだけど、忘れそうなのでメモです。
Linuxのファイル内で特定の文字列を検索したい。 そんなことってたまにありますよね。
自分の場合は、同じプロジェクトのソースでも色々な理由からRepositoryが別れていて IDEにRepository毎に編集したりするんだけど、どこかに文字列が入ってる。 でもいちいち検索するのが面倒くさいし、全検索は結構メモリ食うんだよね。
ってことでどうせならLinux内に全てあるのであれば検索しちゃえと。
以下コマンドで実現できます。
$ find / -type f -print | xargs grep 'hoge'
どれもよく使うコマンドですね。
find
findの次で指定したディレクトリ以下のファイルを検索する。 これはホントよく使います。 ファイルを検索したい時とか特に。
find / -name '*.php'
とかそんな感じで使うとファイルパスが一覧で出力されます。
configとかイジってるのに全然設定変わらない・・・もしかして同じファイル名でどこか別のディレクトリにある!?なんて時に使ったりします。
次に指定しているのが「/」ですね。 これは/以下なので全てのディレクトリを検索することになります。 必要なディレクトリだけであれば「./」とか「/var/」とかフルパスを指定することも可能です。
検索結果を標準出力します。
-type
このoptionでは検索するタイプを指定します。 今回は「f」としているので通常ファイルが対象になります。 その他にも d ディレクトリ l シンボリックリンク という指定もできます。
xargs
これはよく出ますね。 標準入力からコマンドラインを作成して実行します。
grep
これも使います。 ようは検索です。 今回の場合はファイル内の文字列を検索するので、grepの後に検索したい文字列を入れます。
たまに使うのに毎回調べちゃうから忘れないようにメモメモ。