所有者/グループを再帰的に変更するより速い方法は何ですか? [コピー]

所有者/グループを再帰的に変更するより速い方法は何ですか? [コピー]

現在の所有者/グループを再帰的に変更するには、次の手順を実行します。

find . -type f -exec chown <owner>.<group> {} \;
find . -type d -exec chown <owner>.<group> {} \;

ただし、各コマンドには数分かかることがあります。一度に1つのファイルを変更するのではなく、すべてのファイルを一度に(より速く)変更する方法があると聞きましたが、情報が見つからないようです。私はできますか?

答え1

使用されたchown再帰オプション:

chown -R owner:group * .[^.]*

両方を指定すると、すべてのファイルとディレクトリと一致*します。今推奨される区切り記号はです。.[^.]*find:.ジャスティンを使用すると、およびを.*含むように拡張され、親ディレクトリとすべての子ディレクトリの所有権が変更される可能性があるため、安全ではありません。 )...chown

現在のディレクトリの所有権も変更したい場合は、次のように単純化できます。

chown -R owner:group .

答え2

chown独自の再帰を持つこのようなコマンドでは、このオプションを使用するのが最速です。

 chown -R owner:group * .[^.]*

警告する!一部のシェルでは、この型はchown -R owner:group * .*ルートディレクトリ/の所有者を置き換えます。なぜなら、.*すべての../../../../root, ../bin ... etcパス。しかし、最も広く使用されているシェルは強く打つ、該当せず、.拡張..モード。

ただし、使用率を低下させる主な問題は、見つかったすべてのディレクトリとファイルへの呼び出しであることを理解するのに役立ちfindます。chmown使用する方がはるかに高速です。

find . -type f -exec chown <owner>:<group> {} +
find . -type d -exec chown <owner>:<group> {} +

すべての呼び出しは、chownコマンドラインに収まるほどの引数を使用して行われます。

chownこの変更は、組み込みの再帰オプションを持たない他のコマンド(例)にも適用されます。再帰オプションがあるが使用できない場合(たとえば、を使用してディレクトリのみを変更したい場合)は、機能しchmod速度を上げることができます。

関連情報