findの-execコマンドで{} +はどういう意味ですか?

findの-execコマンドで{} +はどういう意味ですか?

{} +コマンドの意味とexecの違いを知りたいです。これらの2つの違いは正確に何ですか?{} +{} \;

find . -type f -exec chmod 775 {} +
find . -type f -exec chmod 775 {} \;

ベストアンサー1

シェルコマンドを終了/呼び出しするには、;(セミコロン)または(プラス記号)を使用する必要があります。+-execexecdir

;(セミコロン)と(プラス記号)の違いは、引数+がfindの-exec/-execdir引数に渡される方法です。たとえば、

  • 使用;複数のコマンドを実行します(各パラメータに対して個別に)、

    例:

    $ find /etc/rc* -exec echo Arg: {} ';'
    Arg: /etc/rc.common
    Arg: /etc/rc.common~previous
    Arg: /etc/rc.local
    Arg: /etc/rc.netboot
    

    以下のパラメーターはすべて、findこのコマンドのパラメーターと見なされます。

    この文字列は、{}現在処理中のファイル名に置き換えられます。

  • 使用+できるだけ少ない数のコマンドを実行します。(パラメータは一緒にグループ化されているためです)コマンドと非常によく似ているxargsため、各コマンドでできるだけ多くの引数を使用して、1行あたりの引数の最大制限を超えません。

    例:

    $ find /etc/rc* -exec echo Arg: {} '+'
    Arg: /etc/rc.common /etc/rc.common~previous /etc/rc.local /etc/rc.netboot
    

    コマンドラインは、選択した各ファイル名を最後に追加することで設定されます。

    {}このインスタンスはコマンドに 1 つだけ許可されます。

また見なさい:

おすすめ記事