抑制find&grep"无法打开"输出

Che*_*eso 5 unix grep filtering find

用户phi给了我这个语法

find . | awk '!/((\.jpeg)|(\.jpg)|(\.png))$/ {print $0;}' | xargs grep "B206"
Run Code Online (Sandbox Code Playgroud)

我想压缩grep的输出:无法打开.....并找到:无法从结果中打开行.

要忽略的示例输出:

grep: can't open ./cisc/.xdbhist
find: cannot open ./cisc/.ssh
Run Code Online (Sandbox Code Playgroud)

Bri*_*new 12

您是否尝试将stderr重定向到/ dev/null?

2>/dev/null
Run Code Online (Sandbox Code Playgroud)

所以上面将第2流(stderr)重定向到/ dev/null.这取决于外壳,但上述内容应该适用于大多数情况.因为find和grep是不同的进程,所以您可能必须为它们执行此操作,或者(可能)在子shell中执行.例如

find ... 2>/dev/null | xargs grep ... 2>/dev/null
Run Code Online (Sandbox Code Playgroud)

这里有一些关于bash重定向的文档的参考.除非您使用csh,否则这应该适用于大多数人.


小智 8

选项标志grep -s将禁止grep命令的这些消息