如何递归地grep所有目录和子目录?
find . | xargs grep "texthere" *
如何递归地grep所有目录和子目录?
find . | xargs grep "texthere" *
当前回答
我现在总是使用(即使在Windows上使用GoW-Gnu):
grep --include="*.xxx" -nRHI "my Text to grep" *
(正如kronen在评论中指出的,您可以添加2>/dev/null以使拒绝权限的输出无效)
其中包括以下选项:
--include=PATTERN
仅在目录中重复搜索与PATTERN匹配的文件。
-n, --line-number
在输出的每一行前面加上输入文件中的行号。
(注意:phuclv在注释中补充道,-n会大大降低性能,因此您可能希望跳过该选项)
-R, -r, --recursive
递归地读取每个目录下的所有文件;这相当于-d递归选项。
-H, --with-filename
打印每个匹配项的文件名。
-I
处理二进制文件,就像它不包含匹配的数据一样;这相当于--binary files=不匹配选项。
如果我想要不区分大小写的结果,我可以添加“I”(-nRHIi)。
我可以得到:
/home/vonc/gitpoc/passenger/gitlist/github #grep --include="*.php" -nRHI "hidden" *
src/GitList/Application.php:43: 'git.hidden' => $config->get('git', 'hidden') ? $config->get('git', 'hidden') : array(),
src/GitList/Provider/GitServiceProvider.php:21: $options['hidden'] = $app['git.hidden'];
tests/InterfaceTest.php:32: $options['hidden'] = array(self::$tmpdir . '/hiddenrepo');
vendor/klaussilveira/gitter/lib/Gitter/Client.php:20: protected $hidden;
vendor/klaussilveira/gitter/lib/Gitter/Client.php:170: * Get hidden repository list
vendor/klaussilveira/gitter/lib/Gitter/Client.php:176: return $this->hidden;
...
其他回答
grep -r "texthere" .
第一个参数表示要搜索的正则表达式,而第二个参数表示应该搜索的目录。在这种情况下。表示当前目录。
注意:这适用于GNUgrep,在某些平台(如Solaris)上,您必须特别使用GNUgrep而不是传统实现。对于Solaris,这是ggrep命令。
grep-r“texthere”。(通知期结束)
(^信用:https://stackoverflow.com/a/1987928/1438029)
澄清:
grep-r“texthere”/(递归地grep所有目录和子目录)
grep-r“texthere”。(递归地grep这些目录和子目录)
grep递归
grep[选项]模式[文件…][选项]-R、 -R,--递归递归地读取每个目录下的所有文件。这相当于-d recurse或--directories=recurse选项。http://linuxcommand.org/man_pages/grep1.html
grep帮助
$grep--帮助
$ grep --help |grep recursive
-r, --recursive like --directories=recurse
-R, --dereference-recursive
选择
确认(http://beyondgrep.com/)
银(http://github.com/ggreer/the_silver_searcher)
球状物**
使用grep-r是可行的,但可能会过度使用,尤其是在大型文件夹中。
对于更实际的用法,以下是使用globbing语法(**)的语法:
grep "texthere" **/*.txt
它只greps具有模式选择模式的特定文件。它适用于受支持的shell,如Bash+4或zsh。
要激活此功能,请运行:shopt-s globstar。
另请参阅:如何在Linux上查找包含特定文本的所有文件?
数字grep
对于Git版本控制下的项目,请使用:
git grep "pattern"
这要快得多。
里普雷普
对于较大的项目,最快的grepping工具是ripgrep,默认情况下递归地对文件进行grep:
rg "pattern" .
它建立在Rust的正则表达式引擎之上,该引擎使用有限自动机、SIMD和激进的文字优化,使搜索速度非常快。查看此处的详细分析。
把我的两分钱扔在这里。正如其他人已经提到的那样,grep-r并不适用于所有平台。这听起来可能很傻,但我总是使用git。
git grep "texthere"
即使目录没有暂存,我也只是暂存并使用git grep。
也:
find ./ -type f -print0 | xargs -0 grep "foo"
但grep-r是更好的答案。