我不得不多次这样做,通常是在尝试查找使用变量或函数的文件时.
我记得过去使用xargs和grep这样做,但我想知道是否有更简单的方法.
grep -r REGEX .
替换.
为您要搜索的目录.
执行此操作的便携方法*
find . -type f -print0 | xargs -0 grep pattern
-print0
告诉find使用ASCII nuls作为分隔符并-0
告诉xargs同样的事情.如果不使用它们,则会在名称中包含空格的文件和目录中出现错误.
*与grep -r,grep -R或grep --recursive相反,它只适用于某些机器.
这是我开始使用ack(http://petdance.com/ack/)代替grep的案例之一.从站点,您可以获得将其安装为Perl CPAN组件的说明,或者您可以获得可以在不处理依赖项的情况下安装的自包含版本.
除了默认为递归搜索这一事实外,它还允许您使用Perl-strength正则表达式,使用正则表达式来选择要搜索的文件等.它有一个令人印象深刻的选项列表.我建议访问该网站并查看它.我发现它非常易于使用,并且如果您使用它,还有将其与vi(m),emacs甚至TextMate集成的提示.
如果您正在寻找字符串匹配,请使用
fgrep -r pattern .
这比使用grep更快.有关此主题的更多信息,请访问:http://www.mkssoftware.com/docs/man1/grep.1.asp