如何在目录树中搜索git托管项目的文件内容?

Mic*_*ant 6 git search grep find directory-tree

我喜欢unix find命令,但是当我想搜索我的项目在任何目录或子目录中的任何文件中查找一段文本时,我总觉得它太"繁琐".
有更简单的方法吗?

Pra*_*ngh 9

试用grep效用:

  1. 要以递归方式搜索目录树中的字符串:

使用: grep -rl alvin .

  1. 搜索多个子目录:

您的递归grep搜索不必仅限于当前目录.下一个示例显示如何以递归方式搜索两个不相关的目录,以查找不区分大小写的字符串"alvin":

grep -ril alvin /home/cato /htdocs/zenf
Run Code Online (Sandbox Code Playgroud)
  1. 递归使用egrep:

您还可以使用该egrep命令执行递归搜索,这样您就可以一次搜索多个模式.

egrep -ril 'aja|alvin' .
Run Code Online (Sandbox Code Playgroud)

请注意,在这种情况下,搜索模式周围需要引号.

摘要:grep -r notes:

关于grep -r命令的一些注意事项:

  • 除非你将它与-l(小写"L")标志一起使用,否则这个grep命令没有多大意义.该标志告诉grep打印匹配的文件名.

  • 不要忘记在grep命令的末尾列出一个或多个目录.如果您忘记添加任何目录,grep将尝试从标准输入读取(像往常一样).

  • 如图所示,您也可以使用其他普通的grep标志,包括-i忽略大小写,-v以反转搜索的含义等.


Mic*_*ant 1

git grep应用程序基目录中的“您的文本字符串”是执行此操作的好方法。

正如克里斯托弗指出的那样,ack这也是有用的。

他的安装方法对我不起作用。我必须做:

sudo apt-get install ack-grep
Run Code Online (Sandbox Code Playgroud)

然后为了方便

alias ack='ack-grep '  # So that I can just type ack "string"
Run Code Online (Sandbox Code Playgroud)

我也会将其添加到我的~/.bash_aliases文件中。