递归锁定特定用户拥有的所有文件


32

是否可以查找和整理特定用户拥有的所有文件?我以错误的用户身份做了很多事情,需要赋予文件正确的用户所有权。

有没有一种递归和有条件的方式可以整理一堆文件和目录?

Answers:


60

您可以将这种可移植的find命令与类似的东西一起使用。

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 {} \;

我在找什么。但要注意的是,new-user:new-usernew-user:new-group
加冕

2
我猜大括号应该用引号引起来,以正确处理带空格的路径。所以find . -user old-user -exec chown new-user:new-group "{}" \;
Dan Benamy 2014年

如果其他任何人正在寻找如何查找属于某个用户的文件(主目录中不属于该用户的用户文件),则可以添加“!” 到该-user other-user部分找到相反的内容。例如,find . ! -user other-user
2016年

当您添加时,上面的内容通常更有用-group old-group。这样,您可以保留组所有权(管理员,员工,sillyothergroupname)
brianlmerritt

ps-chown可能需要sudo
brianlmerritt

12

您可以使用

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.

编辑:当然,这仅适用于linux和大多数UNIces。对于OSX(基于BSD),请参见@StephenTrapped的解决方案。


+1,但在OSX上chown不起作用,它没有该选项,请参见此处
terdon

糟糕,确实,我错过了标签osx :)投票@StephenTrapped。
瑞克2013年

chown --from=CURRENT_OWNER:CURRENT_GROUP -R new_owner:new_group *将跳过运行文件夹命令chown --from=CURRENT_OWNER:CURRENT_GROUP -R new_owner:new_group .中的隐藏文件,但是也适用于父文件夹中的隐藏文件。
拉沙

3

-hCHOWN的选项更改符号链接文件本身,而不仅仅是目标的许可。

在使用二进制链接在版本之间切换的软件二进制文件夹中执行此操作时,这可能至关重要。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.