You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用chown -R命令递归修改权限时排除指定子目录?

如何递归修改目录权限时排除指定子目录

嗨,这个问题我碰到过好多次了——很遗憾,chown本身并没有内置的exclude参数,你写的那种chown -R admin exclude=/home/admin/web/public_html/content /home/admin/web/public_html语法是行不通的,执行后要么报错,要么直接忽略那个无效选项,根本没法达到排除目标子目录的目的。

不过别担心,有两种常用的方法可以实现你的需求:

方法一:使用find命令(最推荐)

这是Linux下处理这类“遍历排除”场景的标准方案,灵活性很高。执行以下命令:

find /home/admin/web/public_html -path /home/admin/web/public_html/content -prune -o -exec chown admin:admin {} +

命令解释:

  • -path /home/admin/web/public_html/content:精准匹配你要排除的目标子目录
  • -prune:告诉find不要进入这个匹配到的目录(直接跳过它的所有内容)
  • -o:逻辑“或”,表示前面的条件不满足时,执行后面的权限修改操作
  • -exec chown admin:admin {} +:对所有未被排除的文件和目录批量执行chown操作,{}代表匹配到的文件/目录,+比传统的\;效率更高

如果需要排除多个目录,只需要追加对应的-path ... -prune -o片段即可,比如:

find /home/admin/web/public_html -path /home/admin/web/public_html/content -prune -o -path /home/admin/web/public_html/another_big_dir -prune -o -exec chown admin:admin {} +

方法二:使用rsync命令(适合快速场景)

如果你只是想批量修改权限,也可以利用rsync的权限修改和排除功能,通过同步目录自身来实现:

rsync -a --chown=admin:admin --exclude=content /home/admin/web/public_html/ /home/admin/web/public_html/

命令解释:

  • -a:归档模式,保留文件的原有属性(除了所有者,因为我们要修改它)
  • --chown=admin:admin:将同步的文件/目录所有者统一改为admin
  • --exclude=content:排除名为content的子目录
  • 路径末尾的斜杠/很重要:如果源路径末尾加了斜杠,rsync会同步目录内的内容到目标目录,而不是额外创建一个子目录

⚠️ 注意:这个方法虽然简单,但如果目录里有大量软链接或者特殊文件,建议先在测试环境验证,避免意外修改。

内容的提问来源于stack exchange,提问作者Mitra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:16:59