![在 Linux 中运行 find 时如何跳过“权限被拒绝”错误?](https://linux22.com/image/23892/%E5%9C%A8%20Linux%20%E4%B8%AD%E8%BF%90%E8%A1%8C%20find%20%E6%97%B6%E5%A6%82%E4%BD%95%E8%B7%B3%E8%BF%87%E2%80%9C%E6%9D%83%E9%99%90%E8%A2%AB%E6%8B%92%E7%BB%9D%E2%80%9D%E9%94%99%E8%AF%AF%EF%BC%9F%20.png)
可能的重复:
如何从查找程序中删除“权限被拒绝”的打印输出语句?
当我在 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/sh
shell。
在tcsh/csh
你会使用
find / -name art |& grep ....