如何在当前目录下的所有perl文件中grep“/ local”

时间:2013-11-09 06:31:28

标签: shell unix

我在所有.pl文件中使用以下命令grep for string“/ local”,有人可以指出这里有什么问题吗?

find . *.pl| xargs grep '/local' -sl

4 个答案:

答案 0 :(得分:1)

传递-name参数,并引用*.pl

find . -name "*.pl" | xargs grep '/local' -sl

答案 1 :(得分:1)

为什么每个人都建议“找到”? shell可以为你计算出你的“.pl”文件:

grep  "/local"  *.pl

答案 2 :(得分:0)

你可以轻松地

find . -type f -name '*.pl' -exec grep '/local/' {} \;

如果您的支持它,或者更优化的形式,这会一次将多个文件传递给grep

find . -type f -name '*.pl' -exec grep '/local/' {} +

答案 3 :(得分:0)

-exec往往很慢。

我偏爱:

find . -name "*.pl" -print0 | xargs -0 grep -sl '/local'

...因为它不会被文件名与其中的换行符混淆。

但请注意,某些版本的GNU grep似乎有一个内存泄漏,由grep命令触发,并且要搜索很长的文件名列表。在这种情况下,-exec更可靠。