grep:查找包含单词`star`但不包含单词`start`的所有文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了grep:查找包含单词`star`但不包含单词`start`的所有文件相关的知识,希望对你有一定的参考价值。
我有一堆文件:一些包含单词star
,一些包含单词start
,一些包含两者。
我想grep包含单词star
的文件,但不是单词start
。
如何只使用grep实现这一目标?
答案
grep
有一些选项可以在行或文件级别反转匹配。你需要后一种选择,使用-L
开关。以下将打印文件夹中不包含文本start
的所有文件的名称:
grep -LF start *
-F
告诉grep,start
是一个字符串而不是正则表达式。它在这里是可选的,但可能会加速一点点。
您可以使用结果列表来搜索包含star
的文件:
grep -lF star $(grep -LF start *)
-l
仅打印包含匹配项的文件名,而不是任何逐行或逐个匹配的详细信息。如果这不是你想要的,man grep
是你的朋友。
这使用额外的shell构造来运行反向匹配,但它在技术上不会调用任何不是grep
的其他程序。
更新
由于您提到要查看以给定根文件夹开头的所有文件,请将-LF
更改为-LFr
。如果您不想更改工作目录,请将*
替换为您的根文件夹。
-r
告诉grep
递归目录,并搜索它在路上找到的每个文件。
另一答案
使用GNU grep for -w
:
$ cat file
foo star bar
oof start rab
$ grep -w star *
foo star bar
或者如果您只想要包含star
的文件的名称:
$ grep -lw star *
file
并找到要查看的文件:
$ find . -maxdepth 1 -type f -exec grep -w 'star' {} ;
foo star bar
以上是关于grep:查找包含单词`star`但不包含单词`start`的所有文件的主要内容,如果未能解决你的问题,请参考以下文章