質問: あるユーザーに属するすべてのファイルを別のユーザーに変更するにはどうすればよいですか? 特定のユーザーに属するすべてのファイルの所有権を、できればターゲットディレクトリにある別の指定したユーザーに変更できるlinuxコマンドを探しています。私の夢のコマンドは次のようになります...chuser -r --olduser tom --newuser jerry またはchuser -r --olduser 1066 --newuser 1492 これは私のシナリオです...ユーザーとグループの情報が保存されたバックアップファイル(.tgz)があります。これは、apacheとmysqlを実行しているwebサーバーから取得されました。バックアップ内のファイルはシステム全体からのものであり、複数の異なるユーザーと複数のシステムタイプアカウントからのファイルが含まれています。新しいサーバーに復元したときに設定が失われないことが重要です。問題は、ファイルが復元されているマシンのユーザーが、バックアップファイルのユーザーと一致しないことです。たとえば、両方のマシンにmysqlユーザーがいましたが、それらには異なるユーザーidがあり、異なるユーザーに属する両方のマシンに存在していたユーザーidがいくつかあります。つまり、新しいマシンのユーザーを古いマシンのユーザーと同期する方法はありません。私はこのようなfindコマンドですべてのユーザーファイルを見つけることができます...find /decompressed-backup-dir -uid 1050 またはfind /decompressed-backup-dir -user tom 私が疑っているように、単一のコマンドで私が望むことを行う方法がない場合、おそらく所有権の変更を処理するために、findコマンドの結果を別のコマンドにパイプする方法がありますか?phpスクリプトを使用してこれを行うことができますが、バックアップに4gbと数万のファイルがあるため、phpまたはperlを使用しませんしかし、それを処理できるシェルスクリプトで満足します。
回答: chownコマンドの--fromフラグがおそらく最も簡単な方法だと思います。chown --from=oldguy newguy * -r