将grep重定向到搜索目录中的文件会导致无限递归。

3
我想要递归地搜索当前目录中包含字符串$level的内容。我希望将输出重定向到名为tmpfile2.txt的文件中。当我尝试这样做时,使用以下命令:
grep -nr '\$level' . > tmpfile2.txt

文件tmpfile2.txt无限增长。罪魁祸首似乎是grep开始搜索tmpfile2.txt并将找到的内容添加到tmpfile2.txt,因此它会无限循环。
更奇怪的是,似乎我在不到一个小时前成功执行了几乎相同的命令。唯一的区别是它是tmpfile1.txt并且搜索字符串中没有美元符号。然而,我刚刚尝试了没有美元符号的命令,仍然遇到了同样的问题。
我的问题是a)如何解决这个问题和b)这是grep的标准行为吗?
2个回答

4

您可以在grep命令中排除tmpfile2.txt

grep -nr '\$level' --exclude=tmpfile2.txt . > tmpfile2.txt

2

或者您可以将grep输出重定向到位于被搜索文件夹之外的文件中。


这是一个更简单、可能更好的想法。谢谢。 - Chris Middleton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接