让grep不打印“没有这样的文件或目录”的错误

2018-09-30  本文已影响0人  mingzhi618

可以使用-s或--no-messages标志来抑制错误。

  -s,–no-messages压制错误信息

grep pattern * -s -R -n

如果你通过git存储库,我build议你使用git grep。 您不需要通过-R或path。

git grep pattern

这将显示从当前目录下的所有匹配。

像这样的错误通常会发送到“标准错误”stream,您可以将它们传送到一个文件,或者只是在大多数命令中消失:

grep pattern * -R -n 2>/dev/null

我通常不会让grep做recursion本身。 通常有几个你想跳过的目录(.git,.svn …)

你可以用像那样的姿态来做聪明的别名:

find . \( -name .svn -o -name .git \) -prune -o -type f -exec grep -Hn pattern {} \;

乍一看似乎有点矫枉过正,但是当你需要过滤出一些图案时,这个方法非常方便。

我已经看到这种情况发生了好几次,断链(指向不存在的文件的符号链接),grep尝试search不存在的目标文件(因此是正确和准确的错误消息)。

我通常不会在控制台上执行系统pipe理员任务时感到麻烦,但是在脚本中,我使用“find”查找文本文件,然后grep每个文件:

find /etc -type f -exec grep -nHi -e "widehat" {} \;

代替:

grep -nRHi -e "widehat" /etc

你有没有尝试过xargs中的-0选项? 像这样的东西:

ls -r1 | xargs -0 grep 'some text'

在grep中使用-I。

例如:grep SEARCH_ME -Irs ~/logs。

reference: http://www.dovov.com/grepxf.html

上一篇下一篇

猜你喜欢

热点阅读