我有一个大型应用程序,我需要找到一个不包含表达式的文件列表。我一直在使用The Silver Searcher,但我不确定如何获得相反的结果
示例
ag 'breadcrumbs' app/controllers
这给出了我可以在控制器目录中找到此表达式的所有文件和行号的列表
我想要得到的是所有没有的文件的列表breadcrumbs
我也对 bash 或 shell 脚本持开放态度
谢谢您的帮助
我有一个大型应用程序,我需要找到一个不包含表达式的文件列表。我一直在使用The Silver Searcher,但我不确定如何获得相反的结果
示例
ag 'breadcrumbs' app/controllers
这给出了我可以在控制器目录中找到此表达式的所有文件和行号的列表
我想要得到的是所有没有的文件的列表breadcrumbs
我也对 bash 或 shell 脚本持开放态度
谢谢您的帮助
对于 Silver Searcher ( ag
),ag -vl breadcrumbs directory_here
将做您正在寻找的。
-l
列出文件,并-v
反转匹配以查找不匹配的文件。
你也可以做ag -L breadcrumbs directory_here
-L
列出所有不包含匹配项的文件。
使用递归grep
,sed
我们可以这样做:
grep -cr <pattern> <directory> | sed -n s/:0$//p
说明:该-c
选项grep
将导致它发出匹配的文件名以及由冒号分隔的匹配数的计数。因此,不匹配的文件的名称以 . 为后缀:0
。
在管道的下一阶段,我们使用sed
. 该-n
选项告诉它不要打印通过它的所有行,这意味着只有那些我们告诉它的行才会打印。我们使用sed
's
命令来编辑:0
以删除该后缀结尾的行。同时,我们添加了p
打印这些匹配行的命令。
使用grep -vl
:
find myprojectroot -type f | xargs grep -vl breadcrumbs
grep
使用正则表达式搜索文件,但纯文本也可以。
-v
仅当未找到
该术语时才匹配-l
列出文件(而不是每个匹配项)
xargs
执行命令,传递命令上的每一行
find X -type f
查找名为 X 的目录中或目录下的所有文件(-type d
查找您不想要的目录)