ID , 'noindex' , true)){ echo ''; } ?>

(調査でよく使う) grepとfindコマンドで検索する方法まとめ

(調査でよく使う) grepとfindコマンドで検索する方法

 

エラー箇所やファイルの特定など、調査でよく使うコマンドとして
grepコマンドとfindコマンドがある。これらは日常よく使うので、メモ。

 

特定の文字列を含むファイルを検索したい:grepコマンド

grepコマンドは、特定の文字列を含むファイルを検索できるコマンドだ。
エラー文字列の出力箇所がどこか調査したり、変数やファンクションの使用箇所を調べたり、、
とにかくいろんな場面で日常良く使うコマンドだ。

 

grepコマンドの書式

grepコマンドの書式は下記

grep [オプション] 検索文字列 検索対象

 

オプションなしの使い方

下記のような記述のファイル(grep-file0.txt)を例に、
各オプション毎の使い方を説明していく。

 

まずは手始めにオプションなしのgrepコマンドの挙動を確認する。

happyという文字列を、grep-file0.txtから検索する。

grep happy grep-file0.txt

実行結果
grep-normal

happyという文字列を含んでいたので、
合致したhappyという文字列がコンソールに出力された。

これだけだと文字列を含んでいることはわかるが、あまり実用性がない。
そこで、オプションをつけることでより柔軟に検索を行うことができる。

 

grepコマンドのおすすめは「-rnオプション」

筆者のgrepコマンドおすすめのオプションは、
「-rn」オプションだ。

 

-rnオプションを使用することで、以下のようなgrep検索が可能となる。

-rnオプション
  • (rオプリョン)ディレクトリを再帰的に検索する。
  • (nオプション)検索にヒットした行数を表示する。

 

#「function check(」と言う文字列を、カレントディレクトリから検索

grep -rn "function check(" .

 

画像だとちょっと分かりづらいが、
検索結果は一行ごとに以下のような表示内容になっている。

ファイルパス:行番号   ヒットした行

 

サクラエディタのgrep機能に近い感じの結果になるのでおすすめしただけだが、個人的にはこれが一番わかりやすいかな〜と思っている(サクラエディタみたい検索結果の場所へジャンプはできないが、、)。

 

他にもgrepコマンドのオプションはたくさんあるので、
自分なりに試してみていざと言う時のために引き出しをいくつか作っておくと便利。

 

 

ファイル名やディレクトリ名を検索したい:findコマンド

findコマンドは、ファイルやディレクトリ検索ができるコマンドだ。
オプションによって様々なパターン検索ができる。

 

ワイルドカードでfindする

findコマンドで一番使用頻度の高い使い方は、
ワイルドカードでのfind検索するパターンだ

ワイルドカードでのfind検索を使えば、

  • ちょっとファイルの場所忘れちゃったな〜とか、
  • 「.js」で終わるファイルってどこにどのくらいあるんだろ〜

 

とゆう場合に簡単にファイルを検索することができる。

 

findコマンドをワイルドカードで使う書式は下記。

# .jsで終わるファイルをカレントディレクトリ以下から検索

find . -name \*.js
ワイルドカードを使用したfindコマンド

 

「*」を使用して、曖昧検索することができる。
「*」の前には\(バックスラッシュ)をつけるのを忘れずに(または“*.js”としてもOK)

うろ覚えのファイル名だったり、上記のように拡張子で検索したりできるので、呪文のように覚えておくと便利。

また「*」は複数文字列を曖昧検索してくれるのに対し、「?」を使うと、?の部分の1文字だけ曖昧検索にしてくれる(ぶっちゃけ*を覚えていれば日常では大体事足りるが、参考までに)。

 

また別記事にて、-mtimeオプション(指定した日付以内に変更があったファイルを検索する)の使い方を紹介しているので、よければこちらも参考にしていただきたい。

 

https://linuxjm.osdn.jp/html/GNU_grep/man1/grep.1.html

https://atmarkit.itmedia.co.jp/ait/articles/1604/07/news018.html

 

記事が気に入った方はシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です