find / -type d 是从根目录递归查找所有目录的唯一全系统可靠方式,需加 sudo 和 2>/dev/null 避免权限错误干扰,配合 -maxdepth/-mindepth 可精准控制层级,而 locate 因依赖过期数据库且不索引空目录,无法替代实时查找。

用 find / -type d 搜索整个系统中的文件夹
直接从根目录开始递归查找所有目录,是唯一能覆盖全系统的可靠方式。不加限制会遍历所有挂载点(包括 /proc、/sys、/dev),容易卡住或报权限错误。
- 必须加
sudo,否则遇到/root、/etc/shadow所在目录等会跳过 - 建议加
2>/dev/null过滤“Permission denied”刷屏输出,避免干扰结果 - 实际命令形如:
sudo find / -type d -name "ssh" 2>/dev/null - 如果只想看前 20 条,结尾加
| head -20,防止输出爆炸
-maxdepth 和 -mindepth 控制搜索层级
全系统扫描太慢且冗余,多数时候你真正要的是“某一级目录下的所有子目录”,比如只查 /usr 下的二级目录,或排除 /boot 这类特殊路径。
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
-
find /usr -maxdepth 1 -type d:只列出/usr本身及其直接子目录(不含孙子目录) -
find /var -mindepth 1 -maxdepth 2 -type d:跳过/var自身,只查它的子目录和孙目录 -
-maxdepth 0等价于只输出起始路径本身,基本没用,别误用
为什么不用 locate 查文件夹?
locate 确实快,但它查的是 updatedb 数据库里的路径快照,而数据库默认不索引空目录、临时目录(如 /run 下的)、以及未被 PRUNEPATHS 排除但实际刚创建的目录。
- 运行
sudo updatedb后仍可能查不到新建的/opt/myapp,因为updatedb默认跳过/opt(某些发行版配置) -
locate -d /var/lib/mlocate/mlocate.db 'bin'只能匹配完整路径片段,无法区分是文件还是目录,得靠人工判断 - 真正需要“此刻真实存在”的目录结构时,
locate不可替代find
常见误操作和性能陷阱
搜索整个系统时,几个看似合理但实际危险的操作:
- 漏掉
sudo→ 大量Permission denied错误,结果严重缺失(尤其系统级目录) - 用
find / -name "*log*" -type d而不加-iname→ 错过/var/LOG或/tmp/Logs这类大小写混用名 - 在 NFS 或 FUSE 挂载点上执行 → 可能触发远程服务器超时,终端假死
- 用
find / -type d | grep -i config→ 先生成全部目录列表再过滤,内存占用高、响应慢;应改用find / -type d -iname "*config*"让find内部完成匹配
/etc、/usr/local),再决定是否扩大。否则一次 find / -type d 可能跑几分钟,还带出一堆你根本不需要的 /proc/12345/fd 这种瞬态路径。

















