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

时间:2014-07-18 21:57:27

标签: bash recursion grep io-redirection

我试图以递归方式搜索当前目录中的字符串$level。我希望它将输出重定向到名为tmpfile2.txt的文件。当我尝试这样做时,用

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

文件tmpfile2.txt无限增长。罪魁祸首似乎是grep开始搜索tmpfile2.txt并将它在tmpfile2.txt 中找到的内容添加到 tmpfile2.txt,所以它无限地重复出现。

Odder仍然,似乎我在一个多小时前成功地完成了这项工作,命令几乎相同。唯一的区别是它是tmpfile1.txt并且搜索字符串中没有美元符号。但是,我只是在没有美元符号的情况下尝试过,它仍然给我同样的问题。

我的问题是:a)我如何解决这个问题?b)这是grep的标准行为吗?

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

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