コマンドを使用する場合:
find . | xargs grep '...'
間違ったマッチを取得します。現在のフォルダー内のすべてのファイルで文字列...
を検索しようとしています。
Andy Whiteが言ったように、プレーン.
に一致するか、ドットをエスケープするには、fgrep
を使用する必要があります。
したがって、あなたは書く必要があります(-type f
はファイルのみを持つことです。明らかにディレクトリは必要ありません。):
find . -type f | xargs fgrep '...'
または、まだgrepを使用する場合:
find . -type f | xargs grep '\.\.\.'
そして、currentディレクトリのみが必要で、そのサブディレクトリは必要ない場合:
find . -maxdepth 1 -type f | xargs fgrep '...'
「。」は任意の文字に一致するため、3文字以上の行をすべて検索できます。
次のように、ドットをエスケープできます。
find . | xargs grep '\.\.\.'
または、正規表現一致の代わりにリテラル一致を行うfgrepを使用できます。
find . | xargs fgrep '...'
(grepの一部のバージョンは、fgrepのように動作する-Fフラグも受け入れます。)
@OP、...を含むファイルを探している場合、
grep -R "\.\.\." *
文字通りgrep '...'
と入力している場合、ほぼすべての文字列に一致します。 grepコマンドに実際に'...'
と入力しているとは思いませんが、もしそうであれば、...
は3文字と一致します。
あなたが探しているものに関する詳細な情報を投稿してください。誰かがもっとあなたを助けてくれるかもしれません。
一致するfilenameを探している場合は、以下を試してください。
find . -name "filename pattern"
または
find . | grep "filename pattern"
filesに一致するものを探している場合(つまり、grep文字列が含まれている場合)
find . | xargs grep "string pattern"
正常に動作します。または単に:
grep "string pattern" -R *
ジェレミーの答えを完了するには、試してみることもできます
find . -type f | xargs grep 'your_pattern'
または
find . -type f -exec grep 'your_pattern' {} +
Xargsに似ています
私は追加するかもしれません:RTFM!またはもっと丁寧な方法で:
man command
!