17

この一連のコマンドで、{}との\;文字は何ですか?

find . -name '*.clj' -exec grep -r resources {} \;
4

5 に答える 5

32

男が見つけるを参照してください。(特に約の部分-exec

を使用-execして検出された各ファイルに対してコマンドを実行すると、{}は検出された各ファイルの名前に置き換えられ、コマンドは次のように終了します。\;

この例では、現在のディレクトリ(.)の下にある名前に一致するすべてのファイルで*.clj、コマンドgrep -r resourcesが実行されます(resourcesこれらの各ファイルに文字列が存在する場合はその文字列を検索します)。

-rサブディレクトリを再帰的に検索するためのものであるため、実際には多少冗長です。これfindはすでに実行されていることです。

于 2009-01-15T14:59:10.957 に答える
3

検索では、-execパラメーターが残りのパラメーターを;まで取得します。(セミコロン)エスケープする必要があるため、\;。このスパン内で、{}は検査対象のファイル名に置き換えられます。

于 2009-01-15T14:59:40.783 に答える
2

理解しやすいこの代替コマンドを検討してください。

find . -name *.clj | xargs grep -r resources 
于 2009-01-16T01:25:49.817 に答える
1

文字列「{}」は、処理中の現在のファイルに置き換えられます。エスケープされたセミコロンは、-execオプションのコマンド引数を終了します。

于 2009-01-15T15:00:55.103 に答える