web-dev-qa-db-ja.com

特定のユーザーが所有するすべてのファイルを再帰的にチャンニングする

特定のユーザーが所有するすべてのファイルを見つけて、chownすることは可能ですか?私は間違ったユーザーとしてたくさんのことをしました、そして正しいユーザーにファイルの所有権を与える必要があります。

一連のファイルとディレクトリをchownできる再帰的で条件付きの方法はありますか?

35

このポータブル検索コマンドは、次のように使用できます。

find . -user old-user -exec chown new-user:new-group {} \;

これを拡張して、-inameオプションを使用して特定のファイルを見つけることができます(POSIX以外ですが、OSXで利用可能)

find . -iname '*.html' -user www-data -exec chown www-data:www-data {} \;

。現在のフォルダ以下を表すので、特定のパスをベースとして使用できます。

find /var/www/ -iname '*.html' -user www-data -exec chown www-data:www-data {} \;
66
StephenTrapped

使用できます

chown --from=CURRENT_OWNER:CURRENT_GROUP -R new_owner:new_group  *

マニュアルからchown --help

  --from=CURRENT_OWNER:CURRENT_GROUP
                     change the owner and/or group of each file only if
                     its current owner and/or group match those specified
                     here.  Either may be omitted, in which case a match
                     is not required for the omitted attribute.

edit:もちろん、これはlinuxとほとんどのUNICEでのみ機能します。 OSX(BSDベース)については、@ StephenTrappedのソリューションを参照してください。

13
Rik

-h chownのオプションは、ターゲットだけでなく、シンボリックリンクファイル自体の権限を変更します。

これは、シンボリックリンクを使用してバージョンを切り替えるソフトウェアバイナリフォルダーでこれを行うときに重要になる可能性があります。

find . -user old-user -exec chown -h new-user:new-group {} \;

3
Tarun