2009-07-30 9 views
23

私はコマンドを使用する場合:findで提供されたファイルを検索するためにgrepを使用します:findに間違っています。 | xargs grep '...'?

find . | xargs grep '...' 

を私が間違ってマッチを取得します。現在のフォルダ内のすべてのファイルで文字列...を検索しようとしています。

+3

は、あなたがより多くの例がありますか? –

+4

最初に、質問を正しく行う方法を学ぶ必要があります。技術的には間違っていることはありません。問題はあなたがしたいことです。それを適切かつ明確に記述してください。 – ghostdog74

+0

私は答えとして何を得るのですか? – cupakob

答えて

37

、あなたはプレーン.のために一致し、またはドットを逃れるためにfgrepを使用する必要があります。

だから、あなたが書かなければならない(:あなたは明らかにディレクトリを望んでいない。-type fは、ファイルのみを持つことです):

find . -type f | xargs fgrep '...' 

またはあなたはまだグレップを使用する場合:

find . -type f | xargs grep '\.\.\.' 

そして、あなたは唯一の現在ディレクトリを望んでいないそのサブディレクトリ場合:

find . -maxdepth 1 -type f | xargs fgrep '...' 
+2

'grep -F '...''はうまくいくはずです – Hasturkun

+2

@Hasturkun:はい。私はちょうど余分なオプション( 'gzip -d'の代わりに' gunzip'を使うなど)とは異なるコマンド名を使う傾向があります。通常は味の問題です。 –

2

文字通りgrep '...'と入力すると、ほぼすべての文字列に一致します。あなたのgrepコマンドに実際に'...'と入力しているのではないかと疑いますが、もしそうなら、...は3文字にマッチします。

あなたが探しているものについてさらに情報を投稿してください。多分誰かがあなたを助けることができます。

1

あなたが一致しファイル名を探しているなら、試してみてください。

find . -name "filename pattern" 

または

find . | grep "filename pattern" 

をあなたがファイルその試合を探して探している場合(すなわち、それは含まれていgrep string)

find . | xargs grep "string pattern" 

はうまく動作します。あるいは単に:アンディ・ホワイトが言ったように

grep "string pattern" -R * 
+0

はい、文字列として "..."を含むファイルを探していますが、 1. find。 | xargs grep "string pattern" または 2. grep "string pattern" -R * は役に立ちません。 – cupakob

7

'。'任意の文字にマッチするので、3つ以上の文字を含むすべての行を検索します。

あなたはこのように、ドットをエスケープすることができ、次のいずれか

find . | xargs grep '\.\.\.' 

それとも、代わりに正規表現マッチのリテラルマッチを行いfgrepは、使用することができます。grepの

find . | xargs fgrep '...' 

(一部のバージョンをfgrepのように動作する-Fフラグも受け入れます。RTFM:)

-1

はジェレミーの答えを完了するために、あなたはまた、私が追加される場合がありますxargsの

に似て

find . -type f | xargs grep 'your_pattern' 

または

find . -type f -exec grep 'your_pattern' {} + 

を試してみたいことがあります!より礼儀正しい方法で:

man command 

の乱用を使用してください。

+1

もっと丁寧な?フレンドリーマニュアルを読むどのようにそれは無礼と考えることができますか?丁重なフリーク。 :) –

+0

マニュアルページは本当にかなりフレンドリーで、何度も何度も読まれることを楽しみにしています。 (あなたは私の一日を作った、ジェレミーXD) –

+0

それは後で、より嫌な私のコメントを得るようになります。私は今、ピークに達していると思う。ここからすべて下り坂です。 –

5

@OP、あなたが含まれているファイルを探しているなら...、

grep -R "\.\.\." * 
+1

はるかに簡単な解決策です。 grepには、再帰的なファイル検索が組み込まれています。 – duckbrain

関連する問題