Unix命令列出包含字符串但*NOT*包含另一个字符串的文件

Mat*_*rym 30 linux command-line grep command find

如何递归查看具有一个字符串且特别是没有其他字符串的文件列表?另外,我的意思是评估文件的文本,而不是文件名.


结论:

根据评论,我最终使用:

find . -name "*.html" -exec grep -lR 'base\-maps' {} \; | xargs grep -L 'base\-maps\-bot'
Run Code Online (Sandbox Code Playgroud)

这返回的文件包含"base-maps"而不是"base-maps-bot".谢谢!!

San*_*hal 42

试试这个:

grep -rl <string-to-match> | xargs grep -L <string-not-to-match>
Run Code Online (Sandbox Code Playgroud)

说明:grep -lr使grep递归(r)输出包含的所有文件的列表(l)<string-to-match>.xargs遍历这些文件,调用grep -L它们中的每一个.grep -L只会在文件不包含时输出文件名<string-not-to-match>.

  • @Matrym`找到.-name"*.html"-exec grep -l <​​string-to-match> {} \; | xargs grep -L <string-not-to-match>` (7认同)