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

Mic*_*all 39 unix permissions macos

是否可以查找并删除特定用户拥有的所有文件?我作为错误的用户做了很多事情,需要为文件提供正确的用户所有权。

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

小智 70

您可以将这个可移植的 find 命令与这样的东西一起使用。

find . -user old-user -exec chown new-user:new-group {} \;
Run Code Online (Sandbox Code Playgroud)

您可以扩展它以使用 -iname 选项查找特定文件(非 POSIX 但在 OSX 上可用)

find . -iname '*.html' -user www-data -exec chown www-data:www-data {} \;
Run Code Online (Sandbox Code Playgroud)

这 。代表当前文件夹及以下文件夹,因此您可以使用特定路径作为基础。

find /var/www/ -iname '*.html' -user www-data -exec chown www-data:www-data {} \;
Run Code Online (Sandbox Code Playgroud)

  • 我猜大括号应该用引号引起来以正确处理带空格的路径。所以```找到。-user old-user -exec chown new-user:new-group "{}" \;``` (3认同)

Rik*_*Rik 17

您可以使用

chown --from=CURRENT_OWNER:CURRENT_GROUP -R new_owner:new_group  *
Run Code Online (Sandbox Code Playgroud)

从手册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.
Run Code Online (Sandbox Code Playgroud)

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


小智 5

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

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

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


归档时间:

查看次数:

54449 次

最近记录:

4 年,2 月 前