コンテンツ全体で何かを検索する必要がある
やっています:
find . | xargs grep Word
エラーが発生します:
xargs:終了していない引用
これを達成する方法は?
xargs
は、他のコマンドが生成しない形式の入力を想定しているため、効果的に使用することは困難です。ここで問題なのは、xargs
(おそらく'
を含む)への入力時に名前を引用する必要があるファイルがあることです。
Grepが再帰検索の-r
または-R
オプションをサポートしている場合は、それを使用してください。
grep -r Word .
それ以外の場合は、find
の-exec
プライマリを使用します。これは、ファイル名に制約がないことを除いて、xargs
と同じ効果を得る通常の方法です。合理的に最近のバージョンのfind
では、補助コマンドの1回の呼び出しで複数のファイルをグループ化できます。 /dev/null
をgrep
に渡すと、単一のファイルで呼び出された場合でも、一致する各ファイルの前にファイル名が表示されます。
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"
GNUツール(Linuxタグが正確である場合に実行します)がある場合は、-print0
および-0
を使用して、通常の引用問題を回避できます。
find . -type f -print0 | xargs -0 grep Word
現在のディレクトリでは、grepを使用できます。
grep -irl root .