我怎样才能让grep不打印“没有这样的文件或目录”的错误?
我通过gitpipe理大量代码,每当我做一个grep的时候,我都会看到一堆堆的forms的消息:
> grep pattern * -R -n whatever/.git/svn: No such file or directory
有什么办法可以让这些线路消失吗?
您可以使用-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
。