【问题标题】:Suppress find & grep "cannot open" output禁止查找和 grep“无法打开”输出
【发布时间】:2009-06-22 19:06:39
【问题描述】:

用户phi给了我this语法

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

我想抑制 grep: can't open..... 的输出并找到:无法从结果中打开行。

要忽略的示例输出:

grep: can't open ./cisc/.xdbhist
find: cannot open ./cisc/.ssh

【问题讨论】:

    标签: unix find grep filtering


    【解决方案1】:

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

    2>/dev/null
    

    所以上面将流 2(即标准错误)重定向到 /dev/null。这取决于外壳,但以上内容应该适用于大多数人。因为 find 和 grep 是不同的进程,所以您可能必须同时为这两个进程执行此操作,或者(可能)在子 shell 中执行。例如

    find ... 2>/dev/null | xargs grep ... 2>/dev/null
    

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

    【讨论】:

    • 我有点犹豫要不要尝试一下......这究竟是做什么的?它似乎不能满足我的需要,但那是从 370 到 9,733
    • 它只是将所有错误发送到/dev/null,在那里它们将被忽略。
    • 它假设(我没有检查过,我承认)您的上述错误出现在 std err 上。 2>/dev/null 会将错误重定向到 /dev/null(一个 bin),就像(比如说)find ... > /tmp/find.results 会将 std out 重定向到一个文件
    • 找到 . 2>/开发/空| awk '!/(((\.jpeg)|(\.jpg)|(\.png))$/ {print $0;}' | xargs grep "B206" 2>/dev/null
    【解决方案2】:

    选项标志 grep -s 将为 grep 命令抑制这些消息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-26
      • 1970-01-01
      • 1970-01-01
      • 2016-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多