grep 并且不显示包含特定字符串的行

grep and don't show lines that containa a certain string

我有以下命令和输出

$ find . -iname '*custom_layout_width*'
find: ‘./etc/apps/learned/local’: Permission denied
./etc/apps/search/appserver/static/custom_layout_width.js
find: ‘./etc/apps/search/local’: Permission denied
./etc/apps/simple_xml_examples/appserver/static/custom_layout_width.js
find: ‘./etc/apps/simple_xml_examples/local’: Permission denied
find: ‘./etc/apps/splunk_management_console/lookups’: Permission denied

我不想显示不包含字符串 Permission.

的行

我该怎么做? 本来想用grep的,但是我显然不是那么好。

$ find . -iname '*custom_layout_width*' | grep '!Permission'

EDIT1 找到了这个 here 但使用 -v 似乎对我不起作用

您可以将错误重定向到 /dev/null

find . -iname '*custom_layout_width*' 2>/dev/null

以下将不起作用,

find . -iname '*custom_layout_width*' | grep '!Permission'

因为,pipe 是从 stdout 获取输入并将其作为输入传递给下一个命令。但是这里 Permission Denied 会出现在 stderr 中。所以管道将不起作用。

为此你可以这样做,

find / -iname "hi" 2>&1 | grep -v "Permission"

2>&1 它正在将 stderr 合并到 stdout。现在 stderr 内容将被放置在 stdout.