私は次のコマンドを使用して、サブディレクトリにあるものをgrepします
find . | xargs grep -s 's:text'
ただし、これにより、<s:textfield name="sdfsf"...../>
それを避けるために何ができるので、<s:text name="sdfsdf"/>
またはそのことについて....も見つけます<s:text somethingElse="lkjkj" name="lkkj"
基本的に s:text
とname
は同じ行にある必要があります。..
-w
オプションは、Wordの終わりであることを指定します。
find . | xargs grep -sw 's:text'
つかいます \b
「単語の境界」で一致します。これにより、単語全体でのみ検索が一致します。
あなたのgrepは次のようになります
grep -r "\bSTRING\b"
色と行番号を追加することも役立ちます
grep --color -rn "\bSTRING\b"
http://www.regular-expressions.info/wordboundaries.html から:
Wordの境界として認められる3つの異なる位置があります。
- 文字列の最初の文字の前(最初の文字がWord文字の場合)。
- 文字列の最後の文字の後(最後の文字がWord文字の場合)。
- 文字列内の2つの文字の間。1つはWord文字で、もう1つはWord文字ではありません。
Grepを再帰的に検索することにより、xargs
コマンドを削除できます。通常、「s」フラグは必要ありません。したがって:
grep -wr 's:text'
残りのテキスト部分のみを除外する場合は、これを実行できます。
xargs grep -s 's:text '
これにより、最後のtの後にスペースがあるs:text
インスタンスのみが検索されます。名前要素のみを持つs:text
インスタンスを見つける必要がある場合は、結果を別のgrep
式にパイプするか、regexを使用して必要な要素のみをフィルタリングします。