旅するえんじにあ - Engineers to Travel -

旅するエンジニアの気まま備忘録

【Linux】ファイル内の文字列を検索する

よく使うんだけど、忘れそうなのでメモです。

Linuxのファイル内で特定の文字列を検索したい。 そんなことってたまにありますよね。

自分の場合は、同じプロジェクトのソースでも色々な理由からRepositoryが別れていて IDEにRepository毎に編集したりするんだけど、どこかに文字列が入ってる。 でもいちいち検索するのが面倒くさいし、全検索は結構メモリ食うんだよね。

ってことでどうせならLinux内に全てあるのであれば検索しちゃえと。

以下コマンドで実現できます。

$ find / -type f -print | xargs grep 'hoge'

どれもよく使うコマンドですね。

find

findの次で指定したディレクトリ以下のファイルを検索する。 これはホントよく使います。 ファイルを検索したい時とか特に。

find / -name '*.php'とかそんな感じで使うとファイルパスが一覧で出力されます。 configとかイジってるのに全然設定変わらない・・・もしかして同じファイル名でどこか別のディレクトリにある!?なんて時に使ったりします。

次に指定しているのが「/」ですね。 これは/以下なので全てのディレクトリを検索することになります。 必要なディレクトリだけであれば「./」とか「/var/」とかフルパスを指定することも可能です。

-print

検索結果を標準出力します。

-type

このoptionでは検索するタイプを指定します。 今回は「f」としているので通常ファイルが対象になります。 その他にも d ディレクトリ l シンボリックリンク という指定もできます。

xargs

これはよく出ますね。 標準入力からコマンドラインを作成して実行します。

grep

これも使います。 ようは検索です。 今回の場合はファイル内の文字列を検索するので、grepの後に検索したい文字列を入れます。

たまに使うのに毎回調べちゃうから忘れないようにメモメモ。