如何根据先前的所有者 ID 来更改一大组文件的所有者?

如何根据先前的所有者 ID 来更改一大组文件的所有者?

我在 OS X 中创建了一个新帐户并删除了旧帐户。

我有一堆文件,现在所有者为 501,需要将所有权更改为我

[/usr/local]$ ll 
total 24
drwxrwxr-x  18 root  admin   612B Oct 20 11:01 ./
drwxr-xr-x@ 14 root  wheel   476B Oct 19 10:43 ../
-rw-r--r--   1 501   admin   116B Oct 19 10:01 .gitignore
drwxr-xr-x  13 501   admin   442B Oct 19 12:35 Cellar/
drwxr-xr-x   7 501   admin   238B Oct 19 12:17 Library/
-rw-r--r--   1 501   admin   679B Oct 19 10:01 README.md
drwxr-xr-x  42 501   admin   1.4K Oct 20 11:12 bin/
drwxr-xr-x   2 501   admin    68B Oct 20 11:01 cfg/
drwxr-xr-x   5 501   admin   170B Oct 20 11:08 data/
drwxr-xr-x   7 501   admin   238B Oct 20 11:08 docs/
drwxr-xr-x   4 501   admin   136B Oct 19 12:23 etc/
drwxr-xr-x  11 501   admin   374B Oct 19 12:35 include/
drwxr-xr-x  38 501   admin   1.3K Oct 19 12:35 lib/
lrwxr-xr-x   1 root  wheel    27B Oct 20 10:02 mysql -> mysql-5.5.16-osx10.6-x86_64
drwxr-xr-x  16 root  wheel   544B Sep  9 11:08 mysql-5.5.16-osx10.6-x86_64/
drwxr-xr-x  16 501   admin   544B Oct 20 11:01 share/
drwxr-xr-x   4 501   admin   136B Oct 20 11:01 tests/
drwxr-xr-x   2 501   admin    68B Oct 20 11:01 www/



[/usr/local]$ ll Cellar
total 0
drwxr-xr-x  13 501   admin   442B Oct 19 12:35 ./
drwxrwxr-x  18 root  admin   612B Oct 20 11:01 ../
drwxr-xr-x   3 501   admin   102B Oct 19 12:18 gettext/
drwxr-xr-x   3 501   admin   102B Oct 19 12:16 git/
drwxr-xr-x   3 501   admin   102B Oct 19 12:21 glib/
drwxr-xr-x   3 501   admin   102B Oct 19 12:34 gnutls/
drwxr-xr-x   3 501   admin   102B Oct 19 12:23 irssi/
drwxr-xr-x   3 501   admin   102B Oct 19 12:31 libgcrypt/
drwxr-xr-x   3 501   admin   102B Oct 19 12:30 libgpg-error/
drwxr-xr-x   3 501   admin   102B Oct 19 12:20 libiconv/
drwxr-xr-x   3 501   admin   102B Oct 19 12:32 libtasn1/
drwxr-xr-x   3 501   admin   102B Oct 19 12:35 loudmouth/
drwxr-xr-x   3 501   admin   102B Oct 19 12:17 pkg-config/
[/usr/local]$ 

目标

我想递归查找所有文件目录/usr/local/及其所有者501,并将其 chown 为$USER

笔记

此文件夹中的部分文件和目录归 拥有root。这些文件需要保持不变。

答案1

sudo find /usr/local -uid 501 -exec chown $USER '{}' ';'

顺便一提,find还具有-nouser将所有文件与已删除用户的 UID 进行匹配的选项:

sudo find /usr/local -nouser -exec chown $USER '{}' ';'

还会匹配另一个已删除用户的文件。

相关内容