我正在grepping一大堆由git管理的代码,每当我做grep时,我都会看到成堆的形式的消息:

> grep pattern * -R -n
whatever/.git/svn: No such file or directory

有什么办法能让这些皱纹消失吗?


当前回答

你试过xargs中的-0选项吗?就像这样:

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

其他回答

我将stderr重定向到stdout,然后使用grep的逆匹配(-v)来排除我想隐藏的警告/错误字符串:

grep -r <pattern> * 2>&1 | grep -v "No such file or directory"

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

-s,——no-messages禁止错误消息

grep pattern * -s -R -n

你试过xargs中的-0选项吗?就像这样:

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

我通常不让grep自己做递归。通常有一些您想要跳过的目录(。git, . svn…)

你可以像这样巧妙地使用别名:

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

乍一看,这似乎有些过分,但当您需要过滤掉一些模式时,它是相当方便的。

在grep中使用-I。

例如:grep SEARCH_ME -Irs ~/logs。