3

我有一个大型应用程序,我需要找到一个不包含表达式的文件列表。我一直在使用The Silver Searcher,但我不确定如何获得相反的结果

示例 ag 'breadcrumbs' app/controllers这给出了我可以在控制器目录中找到此表达式的所有文件和行号的列表

我想要得到的是所有没有的文件的列表breadcrumbs

我也对 bash 或 shell 脚本持开放态度

谢谢您的帮助

4

3 回答 3

4

对于 Silver Searcher ( ag),ag -vl breadcrumbs directory_here将做您正在寻找的。

-l列出文件,并-v反转匹配以查找不匹配的文件。

你也可以做ag -L breadcrumbs directory_here

-L列出所有不包含匹配项的文件。

于 2019-11-22T00:11:34.410 回答
1

使用递归grepsed我们可以这样做:

grep -cr <pattern> <directory> | sed -n s/:0$//p

说明:该-c选项grep将导致它发出匹配的文件名以及由冒号分隔的匹配数的计数。因此,不匹配的文件的名称以 . 为后缀:0

在管道的下一阶段,我们使用sed. 该-n选项告诉它不要打印通过它的所有行,这意味着只有那些我们告诉它的行才会打印。我们使用sed's命令来编辑:0以删除该后缀结尾的行。同时,我们添加了p打印这些匹配行的命令。

于 2019-11-22T00:23:02.373 回答
-2

使用grep -vl

find myprojectroot -type f | xargs grep -vl breadcrumbs

grep使用正则表达式搜索文件,但纯文本也可以。

-v仅当未找到 该术语时才匹配-l列出文件(而不是每个匹配项)

xargs执行命令,传递命令上的每一行

find X -type f查找名为 X 的目录中或目录下的所有文件(-type d查找您不想要的目录)

于 2019-11-22T00:01:31.673 回答