web-dev-qa-db-ja.com

Linuxでディレクトリのコンテンツ全体で単語を検索する方法

コンテンツ全体で何かを検索する必要がある

やっています:

find . | xargs grep Word

エラーが発生します:

xargs:終了していない引用

これを達成する方法は?

15
xyz

xargsは、他のコマンドが生成しない形式の入力を想定しているため、効果的に使用することは困難です。ここで問題なのは、xargs(おそらく'を含む)への入力時に名前を引用する必要があるファイルがあることです。

Grepが再帰検索の-rまたは-Rオプションをサポートしている場合は、それを使用してください。

grep -r Word .

それ以外の場合は、find-execプライマリを使用します。これは、ファイル名に制約がないことを除いて、xargsと同じ効果を得る通常の方法です。合理的に最近のバージョンのfindでは、補助コマンドの1回の呼び出しで複数のファイルをグループ化できます。 /dev/nullgrepに渡すと、単一のファイルで呼び出された場合でも、一致する各ファイルの前にファイル名が表示されます。

find . -type f -exec grep Word /dev/null {} +

古いバージョンのfind(古いシステムまたはOpenBSD、またはBusyBoxなどの縮小ユーティリティ)は、一度に1つのファイルに対してのみ補助コマンドを呼び出すことができます。

find . -type f -exec grep Word /dev/null {} \;

findおよびxargsの一部のバージョンには、正しく通信できる拡張機能があり、ファイル名を区切るためにnull文字を使用するため、引用符は必要ありません。最近では、OpenBSDのみがこの機能を備えており、-exec … {} +はありません。

find . -type f -print0 | xargs -0 grep Word /dev/null

私はあなたが最初のオプションを意味すると思います

ファイル内のコンテンツを検索するためのgrep再帰

grep -R "content_to_search" /path/to/directory

ls再帰的、一致するファイルを検索

ls -lR | grep "your_search"
12
Feida Kila

GNUツール(Linuxタグが正確である場合に実行します)がある場合は、-print0および-0を使用して、通常の引用問題を回避できます。

find . -type f -print0 | xargs -0 grep Word
2
mu is too short

そこにも ack があり、.svn.gitなどの特別なディレクトリをスキップするように設計されています。これは、開発者向けの日常的なツールです。

一般的なスイッチの grep にかなり近いです。

例:

ack -r string .

パッケージack-grepのdebian&debianのいいね!.

0
Gilles Quenot

現在のディレクトリでは、grepを使用できます。

 grep -irl root .
0
Ranjithkumar T