如果且仅当文件不包含字符串foo
时,我想打印出文件名。但是,如果file
包含foo
并且我运行这个
grep -lv 'foo' file
file
被输出。为什么会发生这种事,我该怎么办? 最佳答案
-v
表示匹配任何与模式不匹配的行。所以-lv
意味着列出任何包含与模式不匹配的行的文件。这与没有一行与模式匹配的文件不同。
使用-L
选项列出与模式不匹配的所有文件。
grep -L 'foo' file
-L, --files-without-match
禁止正常输出;而是打印通常不会打印输出的每个输入文件的名称。这个
扫描将在第一次匹配时停止。
不要用
-v
这个。-L
已经反转列出的文件,并且-v
反转行的匹配方式,因此-Lv
与-l
相同。关于linux - 为什么grep -lv不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45697827/