Linux 为什么';t grep-lv工作?
当且仅当文件不包含字符串Linux 为什么';t grep-lv工作?,linux,grep,Linux,Grep,当且仅当文件不包含字符串foo时,我想打印文件名。但是,如果文件包含foo,并且我运行这个 grep -lv 'foo' file 文件被输出。为什么会发生这种情况?我可以做些什么来解决它?grep-lv的意思是:列出每个包含不匹配行的文件 您正在寻找grep-L grep -L 'foo' file -v表示匹配与图案不匹配的任何线条。因此-lv意味着列出包含与模式不匹配的任何行的任何文件。这与没有一行与模式匹配的文件不同 grep -L 'foo' file 使用-L选项列出与模式不匹
foo
时,我想打印文件名。但是,如果文件
包含foo
,并且我运行这个
grep -lv 'foo' file
文件
被输出。为什么会发生这种情况?我可以做些什么来解决它?grep-lv
的意思是:列出每个包含不匹配行的文件
您正在寻找grep-L
grep -L 'foo' file
-v
表示匹配与图案不匹配的任何线条。因此-lv
意味着列出包含与模式不匹配的任何行的任何文件。这与没有一行与模式匹配的文件不同
grep -L 'foo' file
使用-L
选项列出与模式不匹配的所有文件
grep -L 'foo' file
-L,--不匹配的文件
抑制正常输出;而是打印通常不会打印输出的每个输入文件的名称。这个 扫描将在第一次匹配时停止
不要将
-v
与此一起使用-L
已经反转列出的文件,而-v
反转行匹配的方式,因此-Lv
与-L
相同。您应该删除-v选项,因为这意味着它将忽略任何行中给出的文本。所以你应该试试:
grep -L 'foo' Input_file
另外,如果您想知道目录中有字符串(foo)的所有文件,那么您也可以尝试以下操作
grep -L 'foo' /path/to/files/*.txt
awk 'val{close(val)} FNR==1{val=FILENAME} /Var/{;print FILENAME;nextfile}' *.txt
grep-L的一个示例,其中它将打印所有包含字符串foo的.txt文件名
编辑:如果您对awk解决方案感兴趣,也可以尝试以下内容
grep -L 'foo' /path/to/files/*.txt
awk 'val{close(val)} FNR==1{val=FILENAME} /Var/{;print FILENAME;nextfile}' *.txt
grep-Lv'foo'文件
似乎没有输出任何内容,即使文件
不包含foo
flag@JamesKo-v
正在撤消-L
的行为。好的,我明白了。感谢大家的澄清。更新了答案。