何をする
{} \;
文字列はbashを意味しますか?
たとえば、すべてのファイルを名前で検索して削除するには、実行する必要があります
find . -name "FILE-TO-FIND" -exec rm -rf {} \;
この文字列は何をしますか?
{}
と;
は両方ともbash
で特別な意味を持ちますが、find
のコンテキストでは、実際にこれら2つを解釈するのはfind
です(実際、これら2つを解釈するのはfind
です)。
まず、-exec
はfind
のアクションです。 {}
および;
は、find
の-exec
述部の特別なパラメーターです。
-exec
アクションの構文は次のとおりです。
-exec command ;
または
-exec command {} +
そのため、{}
と;
が事前にシェルによって解釈されないようにする必要があります。
find .... -exec
のコンテキスト:
{}
は、find
式の結果(この場合はfind . -name "FILE-TO-FIND"
)を示します(含む)。空の中括弧{}
にはシェルにとって特別な意味がないため、{}
をエスケープせずに逃げることができます。
bash
は;
をコマンドの終わりとして扱うため、\
を使用してこれをエスケープする必要があります。つまり、\;
は、bash
自体ではなく-exec
によって解析できます。