現在のディレクトリ内で文字列を再帰的に検索します


15

特定の文字列を探して、現在のディレクトリからすべてのファイルを再帰的に検索します。

私は試した

grep -r -i my_string

そして、2つの小さなファイルがあるテストフォルダーで試してみましたが、文字列が見つかりませんでした。

また、単語全体を一致させるのではなく、「含む」を定義する特別な方法はありますか?


3
試してくださいgrep -r -o -i "your_string" *(引用符付き)
。– pl1nk

メッセージを拒否するいくつかの許可を得ていますが、それらのファイルを無視するだけで、残りのチェックを続けますか?
デビッド

右、これらのファイルは無視されています。
pl1nk

回答:


26

ファイル名またはファイル内の単語を検索していますか?grepはファイル内を検索します。

grepは正規表現を使用します-実際、それが「re」部分の略です。したがって、通常のbashワイルドカードは使用しません。であること、abc*ABCで始まる単語を見つけられないだろう、それはその後、ABでゼロ以上のCさん、次の始まる単語を見つけるだろう。しかし、はい、単にパターンを与えると、単語全体を知らなくても、どこでも見つけることができます。単語全体を検索する場合は、それを伝える正規表現を作成する必要があります。

ただし、ほとんどのコマンドと同様に、コマンドの最後にファイル名を配置する必要があります。そのため、サンプルはそこに座ってファイル名を待つだけです。

@plinkが言ったように、

grep -r -o -i "your_string" *

(または*.*、またはその他のfilespec)。エラーは無視できます。多くのエラーが発生している場合は2>/dev/null、末尾に追加して、stderrをヌルデバイスにリダイレクトできます。


6
好奇心が強い人には:-rは再帰を意味します(つまり、現在のフォルダーと現在のフォルダー内のすべてのフォルダー、およびそれらのフォルダー内のすべてのフォルダーを検索します.......無限まで)、-oは行全体を表示しないことを意味し、 -iは大文字と小文字を区別しません。
BKSpurgeon 16

@johnsnailsバックティックは必要ありません。インラインコードブロックとして投稿する場合、Stack Exchangeのフォーマットエラーである可能性が高くなります。
tom_mai78101

ええ、それは理にかなっています。
ジョンズネイル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.