用2>/dev/null可丢弃find的权限错误输出;用-prune跳过/proc、/sys等路径更精准避错;结合2>&1|grep-v过滤特定错误;加-xdev限制搜索范围避免跨文件系统报错。

直接把错误输出丢掉最省事,用 2>/dev/null 就行。
用重定向屏蔽所有权限错误
find 执行时遇到无权限目录(比如 /proc、/sys、/root、/run/user/*/gvfs),会把“Permission denied”写到标准错误(stderr),而默认会显示在终端上。只要不让它显示出来,结果就干净了。
- 语法很简单:
find / -name "xxx" 2>/dev/null -
2>/dev/null表示把编号为 2 的文件描述符(即 stderr)内容全部丢弃 - 注意:这不解决权限问题,只是让错误不干扰你看到的正常结果
只排除特定路径,更精准地避开权限坑
如果你知道哪些目录肯定进不去(比如用户态 FUSE 挂载点或内核虚拟文件系统),可以用 -prune 主动跳过,避免触发错误:
find / -path '/proc' -prune -o -path '/sys' -prune -o -path '/dev' -prune -o -name "xxx" -print- 也可以简化写法:
find / \( -path '/proc' -o -path '/sys' -o -path '/run/user/*/gvfs' \) -prune -o -name "xxx" -print - 这样 find 不会尝试进入这些路径,自然就不会报错,也不需要重定向
配合 grep 过滤特定错误行(适合调试场景)
如果想保留其他错误(比如路径不存在),只隐藏“Permission denied”,可以将 stderr 合并到 stdout 再过滤:
find / -name "xxx" 2>&1 | grep -v "Permission denied"-
2>&1把错误也当普通输出处理,再用grep -v排掉指定字符串 - 适合排查时保留非权限类错误(如设备忙、目录被删等)
小技巧:加 -xdev 避免跨文件系统出错
某些挂载点(比如远程 NFS、FUSE 类 /run/user/*/gvfs)即使有权限也可能因协议或状态异常报错。加上 -xdev 可限制搜索只在当前文件系统内进行:
find / -xdev -name "xxx" 2>/dev/null- 它会自动跳过所有挂载子目录(如 /boot、/home、/mnt 下的独立文件系统)
- 对大多数本地查找足够安全,还能减少意外错误

















