如何使用Find-Type-D命令在Linux中批量调整目录权限,同时保留子文件权限不变?
- 内容介绍
- 文章标签
- 相关推荐
本文共计541个文字,预计阅读时间需要3分钟。
使用 `find` 和 `chmod` 命令配合,可以精确地更改指定目录的权限,而不影响文件内容。以下是具体操作步骤:
只匹配目录,不碰任何文件
-type d 是 find 的核心过滤条件,它严格匹配“目录”类型(即 ls -l 显示开头为 d 的条目),自动排除普通文件、符号链接、设备文件等。这意味着后续 chmod 操作只作用于目录本身,文件权限毫发无损。
- 把
/var/www/html下所有子目录设为标准 Web 目录权限(755):find /var/www/html -type d -exec chmod 755 {} \; - 仅修改当前目录及下级目录(不含文件),设为属主全权、组可进入、其他不可访问(750):
find . -type d -exec chmod 750 {} \;
常见误操作避坑点
很多人混淆 -type d 和 -type f,或漏掉 -type 导致 chmod -R 被误触发。关键区别:
- ✅ 正确:命令中明确含
-type d→ 只找目录 → chmod 只跑在目录上 - ❌ 错误:
chmod -R 755 /path→ 强制递归,目录和文件全被设成 755,文件多出执行位(x),存在安全风险 - ❌ 错误:
find /path -exec chmod 755 {} \;→ 没加-type d,会把所有匹配项(含文件)都改成 755
进阶:排除特定目录不修改
若想跳过缓存、日志等动态目录(如 cache/ 或 logs/),可用 -not -path 精确排除,不影响其余目录:
- 给所有目录设 755,但跳过
/var/www/html/cache及其子目录:find /var/www/html -type d -not -path "/var/www/html/cache" -exec chmod 755 {} \; - 同理,排除多个路径需重复使用
-not -path,中间用-a连接(也可省略)
本文共计541个文字,预计阅读时间需要3分钟。
使用 `find` 和 `chmod` 命令配合,可以精确地更改指定目录的权限,而不影响文件内容。以下是具体操作步骤:
只匹配目录,不碰任何文件
-type d 是 find 的核心过滤条件,它严格匹配“目录”类型(即 ls -l 显示开头为 d 的条目),自动排除普通文件、符号链接、设备文件等。这意味着后续 chmod 操作只作用于目录本身,文件权限毫发无损。
- 把
/var/www/html下所有子目录设为标准 Web 目录权限(755):find /var/www/html -type d -exec chmod 755 {} \; - 仅修改当前目录及下级目录(不含文件),设为属主全权、组可进入、其他不可访问(750):
find . -type d -exec chmod 750 {} \;
常见误操作避坑点
很多人混淆 -type d 和 -type f,或漏掉 -type 导致 chmod -R 被误触发。关键区别:
- ✅ 正确:命令中明确含
-type d→ 只找目录 → chmod 只跑在目录上 - ❌ 错误:
chmod -R 755 /path→ 强制递归,目录和文件全被设成 755,文件多出执行位(x),存在安全风险 - ❌ 错误:
find /path -exec chmod 755 {} \;→ 没加-type d,会把所有匹配项(含文件)都改成 755
进阶:排除特定目录不修改
若想跳过缓存、日志等动态目录(如 cache/ 或 logs/),可用 -not -path 精确排除,不影响其余目录:
- 给所有目录设 755,但跳过
/var/www/html/cache及其子目录:find /var/www/html -type d -not -path "/var/www/html/cache" -exec chmod 755 {} \; - 同理,排除多个路径需重复使用
-not -path,中间用-a连接(也可省略)

