'{} ;'とは検索コマンドで意味しますか?



What Does Mean Find Command



解決:

あなたが実行する場合で見つける幹部、{}は、で見つかった各ファイルまたはディレクトリのファイル名に展開されます見つける(そのためあなたの例のlsは、見つかったすべてのファイル名を引数として取得します-それが呼び出すことに注意してくださいlsまたは、見つかったファイルごとに1回指定するその他のコマンド)。

セミコロン;によって実行されたコマンドを終了します幹部。それはで逃げる必要があります実行するシェルがfind insideは、それをそれ自体の特殊文字として扱うのではなく、探す。



詳細については、この記事を参照してください。


また、findは、いくつかの最適化を提供しますexec cmd {} +-そのように実行すると、findは、見つかったファイルをファイルごとに1回呼び出すのではなく、コマンドの最後に追加します(可能な場合、コマンドは1回だけ実行されるようにします)。



動作の違い(効率が悪い場合)は、次のコマンドで実行すると簡単にわかります。ls、例:

find〜-iname '* .jpg' -exec ls {} ; #vs find〜-iname '* .jpg' -exec ls {} +

あなたがいくつかを持っていると仮定してjpgファイル( 十分に短いパス )、結果は最初のケースと標準でファイルごとに1行になります後者の列にファイルを表示する動作。


のマンページから検索コマンド



-execコマンド;コマンドを実行します。 0ステータスが返された場合はtrue。以下のすべての引数は、 `; 'で構成される引数になるまで、コマンドに対する引数と見なされます。に遭遇しました。文字列 `{} 'は、一部のバージョンのfindのように、単独の引数だけでなく、コマンドの引数で発生するすべての場所で処理されている現在のファイル名に置き換えられます。これらの構造は両方とも、シェルによる拡張から保護するために、エスケープ( ` 'を使用)または引用符で囲む必要がある場合があります。

だからここに説明があります:

{}は 'の出力を意味します探す'。のように、 '何でも見つかった 'を見つけます。findは、探しているファイルのパスを返しますよね?そう{}がそれを置き換えます。これは、各ファイルのプレースホルダーです。findコマンドが検索します(ここから取得)。

NS;一部は基本的に言っています「大丈夫、実行したいコマンドは完了しました」を見つけます。

例:

私がいっぱいのディレクトリにいるとしましょう.txtファイル。次に実行します:

探す 。 -name '* .txt' -exec cat {} ;

最初の部分、探す 。 -name * .txt、のリストを返します.txtファイル。第二部、-exec cat {} ;を実行しますによって検出されたすべてのファイルのcatコマンド見つけるのでcat file1.txt、catfile2.txtなど。