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

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

コメント

  • 説明されていますman find(1)で詳細に説明されており、誰でも簡単に見つけることができます。 '怠惰にならないでください。
  • ミロスラフさん、ありがとうございます。man execで検索しました!
  • ああ、私はこれまで{} +の使用法に出くわしたことがありませんでした。私は通常、そのためにxargsを使用します(多くの場合、find ... -print0 | xargs -0 ...

回答

;(セミコロン)または+(プラス記号)の使用は、

/ execdir

;(セミコロン)と<の違いdiv id = "17278a0c14">

(プラス記号)は、引数が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に続くすべての引数は、コマンドの引数と見なされます。

    文字列{}は現在のファイルnamに置き換えられますeが処理されています。

  • は可能な限り少ないコマンドを実行します(引数が一緒に結合されるため)。これは、xargsコマンドの動作と非常によく似ているため、1行あたりの引数の上限を超えないように、コマンドごとにできるだけ多くの引数を使用します。

    例:

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

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

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

関連項目:

コメント

  • 違いと大きな違いがあります。 user1116056 ' s の回答をご覧ください li>

回答

コマンド検索は次の3つのファイルを下回ります:

fileA fileB fileC 

-execをplus(+)記号、

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

次のようになります:

chmod 775 fileA fileB fileC 

コマンドラインは、一致する各ファイル名を最後に追加することで作成されます。これは、xargsがコマンドラインを作成するのと同じ方法です。コマンドの呼び出しの総数(この場合はchmod)は、一致するファイルの数よりもはるかに少なくなります。

-execをセミコロン(;)とともに使用する場合、

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

次のようになります:

chmod 775 fileA chmod 775 fileB chmod 775 fileC 

回答

man findによる:

-execコマンド{} + これ-execアクションのバリアントは、選択されたファイルに対して指定されたコマンドを実行しますが、コマンドラインは、選択された各ファイル名を最後に追加することによって構築されます。コマンドの呼び出しの総数は、一致するファイルの数よりはるかに少なくなります。コマンドラインは、xargsがコマンドラインを構築するのとほぼ同じ方法で構築されます。コマンド内で許可される「{}」のインスタンスは1つだけです。コマンドは開始ディレクトリで実行されます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です