可能的重复:如何从查找程序中删除“权限被拒绝”打印输出语句?




在Linux(SuSE)中运行此命令时:

find / -name ant


我得到了


find: `/etc/cups/ssl': Permission denied


find是否接受一个参数以跳过显示这些错误,而仅尝试我有权访问的文件?

评论

由于您询问要查找的参数,因此请考虑:find /!可读的修剪。这就像“修剪那些结果(!)不可读”。请参阅:stackoverflow.com/questions/762348/…

#1 楼

您可以过滤出到stderr的消息。我宁愿像这样将它们重定向到stdout

 find / -name art  2>&1 | grep -v "Permission denied"




说明:

总之,所有常规输出转到标准输出(stdout)。所有错误消息都为标准错误(stderr)。

grep通常查找/打印指定的字符串,-v将其反转,因此它查找/打印每个不包含“拒绝权限”的字符串。 find命令的所有输出,包括通常发送到stderr(文件描述符2)的错误消息,现在转到stdout(文件描述符1),然后由grep命令过滤。

这假定您正在使用bash/sh外壳。

tcsh/csh下,您将使用

 find / -name art |& grep ....


评论


甚至只是找到/ -name art 2> / dev / null

–急
2012年7月11日在20:06

@rush这将过滤掉所有错误消息,而不仅仅是权限被拒绝的错误消息

– Michael Mrozek
2012年7月11日在23:08

想一想,这就是所有发现CAN返回的错误消息。磁盘已满,磁盘读取错误,...可能,但极少见,并且查找不适合处理这些问题。如果仍然出现这些错误,您就会遇到其他问题。查找自己的错误结果甚至是模糊的。0 =好,!0 =发生了什么。除了通过/失败之外,甚至没有其他区别。

– lornix
2012年7月13日在3:24



我在此使用@MichaelMrozek,我宁愿查看所有可能的错误消息,然后决定将其过滤掉,而不是将其发送到看不见的位桶中。

–莱文
2012年7月13日下午3:35

当我使用find 2> / dev / null时,我总是只想要结果集,而不想要任何其他错误消息。当结果集返回null时,我只需运行“常规”查找并找出问题所在。

–巴林·巴比奇(BálintBabics)
18-6-28在14:34