【发布时间】:2015-08-31 08:01:59
【问题描述】:
我最近在寻找一种在使用find 命令搜索文件时过滤掉“权限被拒绝”错误的方法,我找到了这个链接:
How can I exclude all "permission denied" messages from "find"?
这是链接中对我有用的答案:
find . -name "filename" 2>&1 | grep -v 'permission denied'
虽然这个答案有效,但我不完全理解为什么我们需要2>&1(将标准错误重定向到标准输出)。
命令find . -name "filename" | grep -v 'Permission denied' 的输出不是已经重定向到标准输出了吗?
【问题讨论】:
-
只需将
stderr转储到/dev/null。无需管道到 grep。 -
理解修剪错误消息不会使查找成功非常重要。换句话说,即使您
2>/dev/null,您的查找仍然会失败(设置非零退出代码)。当使用 find 的脚本中有set -e时,这尤其痛苦。
标签: bash error-handling find io-redirection