Linuxディレクトリの内容全体から単語を検索する方法

Linuxディレクトリの内容全体から単語を検索する方法

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

努力しています:

find . | xargs grep word

エラーが発生します。

xargs: 終わらない引用

この目標を達成する方法は?

ベストアンサー1

xargs他のコマンドが生成できない形式の入力が必要なため、効率的に使用するのは困難です。ここでの問題は、入力時に名前を引用する必要があるファイルがあることですxargs(含まれる場合があります')。

grepが再帰検索をサポートする-rか、オプションを提供している場合はそれを使用してください。-R

grep -r word .

それ以外の場合は、-exec主要部分を使用してくださいfind。これは同じ効果を得るための一般的な方法ですが、xargsファイル名に制限はありません。比較的最新バージョンでは、findヘルパーコマンドを一度呼び出して複数のファイルをグループ化できます。/dev/nullto を渡すと、grep1 つのファイルから呼び出されても、すべての一致の前にファイル名が表示されます。

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

おすすめ記事