如何递归地grep所有目录和子目录?
find . | xargs grep "texthere" *
如何递归地grep所有目录和子目录?
find . | xargs grep "texthere" *
当前回答
球状物**
使用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和激进的文字优化,使搜索速度非常快。查看此处的详细分析。
其他回答
只是为了好玩,如果@christangrant的答案太多而无法输入,可以快速搜索*.txt文件:-)
grep-r文本此处|grep.txt文件
把我的两分钱扔在这里。正如其他人已经提到的那样,grep-r并不适用于所有平台。这听起来可能很傻,但我总是使用git。
git grep "texthere"
即使目录没有暂存,我也只是暂存并使用git grep。
球状物**
使用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 -l "foo" .
如果您知道所需文件的扩展名或模式,另一种方法是使用--include选项:
grep -r --include "*.txt" texthere .
您还可以使用--exclude提及要排除的文件。
Ag
如果您经常搜索代码,Ag(银搜索器)是grep的一个更快的替代方案,它是为搜索代码而定制的。例如,默认情况下,它是递归的,并自动忽略.gitignore中列出的文件和目录,因此您不必一直向grep或find传递同样繁琐的排除选项。