find命令权限错误咨询:是否存在类似grep -s的静默屏蔽参数?
解决find命令权限错误屏蔽的问题
我完全懂你说的痛点——从根目录或用户主目录跑find时,一堆Permission denied或Operation not permitted的错误提示真的很烦人,用sudo虽然能解决部分问题,但不是所有场景都适用,而且2>/dev/null又太一刀切,连真正有用的错误信息都给吞了,确实不够优雅。
先直接给你结论:find命令本身并没有像grep -s那样专门用来屏蔽权限类错误的参数。不过我们有更精准的替代方案,比粗暴丢弃所有错误要靠谱得多。
更优雅的错误过滤方案
你提到的精准过滤思路非常实用,就是把find的错误输出重定向到标准输出,然后用grep排除掉那些我们不想看到的特定错误信息,还可以把命令优化得更简洁一点:
find / -type f -iname "*balance*.pdf" 2>&1 | grep -vE 'Permission denied|Operation not permitted|No such file or directory|Not a directory'
这里用grep -vE可以一次性匹配多个要排除的错误模式,比多次管道调用grep更高效。
其他可选优化技巧
- 如果你的系统支持,还可以用
find的-perm结合-prune参数,提前跳过那些你没有权限访问的目录,从源头上减少错误输出:
这个命令会先跳过所有当前用户没有读权限的目录,避免后续访问这些目录时产生权限错误。find / -type d ! -perm -u+r -prune -o -type f -iname "*balance*.pdf" -print
虽然find没有内置的静默屏蔽权限错误的参数,但通过上面这些方法,我们可以精准地只屏蔽无关的权限类错误,同时保留其他可能有用的错误提示,比2>/dev/null要安全得多。
内容的提问来源于stack exchange,提问作者nico
相关产品推荐
相关产品推荐

