0

我正在使用以下命令对所有 .pl 文件中的字符串“/local”进行 grep,任何人都可以指出这里有什么问题吗?

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

4 回答 4

1

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

find . -name "*.pl" | xargs grep '/local' -sl
于 2013-11-09T06:34:08.730 回答
1

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

grep  "/local"  *.pl
于 2013-11-09T16:24:35.430 回答
0

你可以很容易

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

支持它,则可以使用更优化的形式,这一次将多个文件传递给 grep

find . -type f -name '*.pl' -exec grep '/local/' {} +
于 2013-11-09T06:34:02.830 回答
0

-exec 往往很慢。

我偏爱:

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

...因为它不会被带有换行符的文件名混淆。

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

于 2013-11-09T06:41:50.567 回答