ls -lR 会显示过多无关信息且不区分文件类型,真正查看某目录下所有内容权限应使用 find /path -exec ls -ld {} \;,配合 -maxdepth 和 -type 可精准控制输出粒度。

直接用 ls -lR 会显示太多无关信息
很多人一上来就试 ls -lR /path,结果满屏滚动、目录混杂、难以定位目标权限。它确实递归列出所有内容,但不区分文件/目录、不带路径前缀、也不过滤空行或报错(比如遇到无权限子目录时直接卡住或跳过)。真正想看“某个目录下所有东西的权限”,得控制输出粒度。
-
ls -lR适合快速扫一眼整体结构,不适合排查具体权限问题 - 若中途遇到
Permission denied,命令不会中断,但对应子树的权限就彻底丢失 - 输出里每层目录都重复打印一次 header(如
./subdir:),人工翻找效率低
find + ls -ld 是更可控的递归方案
真正稳定、可预测、能处理权限边界的方式是组合 find 和 ls -ld:
-
find /target/dir -exec ls -ld {} \;—— 对每个匹配项单独执行ls -ld,确保每行都带完整路径和权限位 - 加
-maxdepth 1可限制只查当前层;去掉则默认无限递归 - 如果只想看目录(不含文件),加
-type d;只看文件则用-type f - 遇到权限不足时,
find默认跳过并继续,不会中断整个流程
示例:find /root -maxdepth 2 -type d -exec ls -ld {} \; 表示:从 /root 开始,最多往下两层,只列出所有目录的详细权限。
权限列第一位字符决定是文件还是目录
无论用哪种命令,最终看到的第一列(如 drwxr-xr-x 或 -rw-r--r--)必须看第一个字符:
-
d→ 目录(directory) -
-→ 普通文件(regular file) -
l→ 符号链接(symbolic link) -
c/b→ 字符/块设备文件(少见)
后面9位分三组(user/group/other),每组3字符,顺序固定为 rwx。缺位用 - 占位,比如 rw- 表示有读写权、无执行权。
权限不足时别硬扛,先确认执行身份
查 /root 或其他受保护路径时,ls -lR 或 find 很可能卡在某一层报 Permission denied。这不是命令错了,是权限模型本身的设计:
- 普通用户无法读取
/root下多数内容,哪怕只是ls目录本身也需要该目录的r权限 - 用
sudo find /root -exec ls -ld {} \;才能绕过限制,但要注意:输出里所有ls -ld都以 root 身份执行,结果可信 - 别试图用
chmod去“修复”查看权限——那是改权限,不是看权限
真正容易被忽略的是:ls -ld 显示的是目录自身的权限,而 ls -l 显示的是目录里内容的权限;递归时这两者常被混为一谈。


















