有没有办法在 Gnu/Linux 中递归查找用户拥有的所有文件并将其更改为另一个用户/组?
我认为一定有一些神奇的一行代码,但我的命令行魔法技能还达不到那个程度:)
谢谢!
答案1
使用find
带-user
选项的命令。例如:
find / -user john
最终将显示用户“john”拥有的所有文件。
如果你想改变他们的所有权(我会运行find
不执行命令来确保你有你想要的列表),然后类似:
find / -user john -exec chown harry {} \;
会做的。
答案2
这已经很晚了,但是今天我偶然发现了这个问题,因为我的rsync
没有这个--usermap
选项。
我的chown
(v. chown(GNU coreutils)8.13)提供了内置的递归(-R
)和一个--from
选项,因此您的(和我)的问题也可以使用来解决
chown -R --from=john harry /
更具体地说,我正在将服务器从 OpenSuse 迁移到 Debian,而 apache2 的用户和组在发行版之间有所不同。在 OpenSuse 中,它的用户和组为
wwwrun (id:30)
,www (id:8)
在 Debian 中www-data (id: 33)
为 。在我使用以下方法复制文件后
rsync -az /path/to/files me@debian:/path/to/
我用了
chown -R --from=30 33 /path/to/files/
chown -R --from=:8 :33 /path/to/files/
在目标(debian)机器上。
注意:rsync version 3.1.0 protocol version 31
有上面提到的--usermap
内容,如果我有的话,我可以在源机器上使用一个命令完成所有三个步骤:
rsync -az --usermap=30:33 --groupmap=8:33 /path/to/files root@debian:/path/to/