在 Linux 中运行 find 时如何跳过“权限被拒绝”错误?

在 Linux 中运行 find 时如何跳过“权限被拒绝”错误?

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

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

find / -name ant

我收到许多以下形式的错误消息:

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

是否find需要一个参数来跳过显示这些错误并仅尝试我有权访问的文件?

答案1

您可以过滤掉发送至 的消息stderr。我更喜欢将他们重定向到stdout这样的状态。

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

解释:

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

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

这假设您正在使用bash/shshell。

tcsh/csh你会使用

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

相关内容