このコマンドは何をしますか?オプション付きのコマンドを検索します

このコマンドは何をしますか?オプション付きのコマンドを検索します

しかし、質問です。このコマンドは何をしますか? find コマンドは知っていますが、引用符で囲んだ式や -exec などのオプションについては知りません。

find /var -name "[0-9]*test[A-Z]" -exec  {} /root/{}';'

答え1

find /varfindディレクトリから検索を開始するように指示します/var

-name "[0-9]*test[A-Z]"findは、パターンに一致するファイル/フォルダのみを返すように指示する検索パターンです"[0-9]*test[A-Z]"。検索文字列を引用符で囲まない場合、シェルはその検索パターンを展開し、結果を実行しようとします。検索パターンを引用符で囲むと、それを の引数として渡しますfind /var -name

元の質問の の部分-exec...には構文エラーがあり、次のようになります( dessert と daisy がコメントしたように、-exec {} /root/{} ';'前のスペースに注意してください)。 は の検索結果に置き換えられる、次の引数を実行するように 指示します。 通常は、シェルの拡張を防ぐために、これらも引用符で囲む必要があります。';'
find{}find

最後に、 は、コマンドを実行するときにセクションが検索結果を処理する';'方法を定義します。 は、find に、各検索結果に対して のコマンドを実行するように指示します。代わりにを使用すると、コマンドはすべての検索結果を展開して実行されます。 これも、シェルが展開して に引数を作成しないように、引用符で囲むかエスケープする必要があります。-exec';'-exec'+'-execfind...-exec

";"との違いを説明する小さな例を"+"以下に示します。

[user@localhost test]$ find . -name "[0-9]*test[A-Z]" -exec echo "{}" ";"
./12ltestA
./1ltestA
[user@localhost test]$ find . -name "[0-9]*test[A-Z]" -exec echo "{}" "+"
./12ltestA ./1ltestA

関連情報