xargs
は、他のコマンドが生成しない形式での入力を想定しているため、効果的に使用するのは困難です。ここで間違っているのは、xargs
への入力で名前を引用する必要があるファイルがあることです。 (おそらく '
を含む ).
grep が -r
をサポートしている場合 または -R
再帰検索のオプション、それを使用してください。
grep -r word .
それ以外の場合は、-exec
を使用します find
のプライマリ .これは、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
ヌル文字を使用してファイル名を区切り、引用符が不要になるように、正しく通信できる拡張子を付けます。最近では、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