コンテンツ全体で何かを検索する必要があります
努力しています:
find . | xargs grep word
エラーが発生します。
xargs: 終わらない引用
この目標を達成する方法は?
答え1
xargs
他のコマンドが生成できない形式の入力が必要なため、効率的に使用するのは困難です。ここでの問題は、入力時に名前を引用する必要があるファイルがあることですxargs
(含まれる場合があります'
)。
grepが再帰検索をサポートする-r
か、オプションを提供している場合はそれを使用してください。-R
grep -r word .
それ以外の場合は、-exec
主要部分を使用してくださいfind
。これは同じ効果を得るための一般的な方法ですが、xargs
ファイル名に制限はありません。比較的最新バージョンでは、find
ヘルパーコマンドを一度呼び出して複数のファイルをグループ化できます。/dev/null
to を渡すと、grep
1 つのファイルから呼び出されても、すべての一致の前にファイル名が表示されます。
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
答え2
最初のオプションを意味していると思います。
grep は、再帰的にファイルの内容を取得するために使用されます。
grep -R "content_to_search" /path/to/directory
ls再帰、一致するファイルを検索するために使用されます
ls -lR | grep "your_search"
答え3
GNUツール(Linuxタグが正しい場合は可能)がある場合は、一般的な引用問題を使用して解決-print0
できます。-0
find . -type f -print0 | xargs -0 grep word
答え4
現在のディレクトリでgrepを使用できます。
grep -irl root .