如何在Linux上查找不包含文本的文本文件?

时间:2011-08-26 13:01:55

标签: linux find text-processing

如何在Linux上找到包含某些文本的文件?基本上我正在寻找以下

的反转
find . -print | xargs grep -iL "somestring"

4 个答案:

答案 0 :(得分:58)

你引用的命令,具有讽刺意味的是你所描述的。 测试一下!

echo "hello" > a
echo "bye" > b
grep -iL BYE a b

只说一个。


我认为你可能会混淆-L和-l

find . -print | xargs grep -iL "somestring"

的倒数

find . -print | xargs grep -il "somestring"

顺便提一下,考虑一下

find . -print0 | xargs -0 grep -iL "somestring"

甚至

grep -IRiL "somestring" .

答案 1 :(得分:3)

您可以单独使用grep来执行此操作(找不到)。

grep -riL "somestring" .

这是对grep上使用的参数的说明

     -L, --files-without-match
             each file processed.
     -R, -r, --recursive
             Recursively search subdirectories listed.

     -i, --ignore-case
             Perform case insensitive matching.

如果您使用l小写字母,则会得到相反的结果(带有匹配项的文件)

     -l, --files-with-matches
             Only the names of files containing selected lines are written

答案 2 :(得分:0)

如果你使用"发现"脚本做" grep"也在文件夹中:

[root@vps test]# find  | xargs grep -Li 1234
grep: .: Is a directory
.
./test.txt
./test2.txt
[root@vps test]#

使用" grep"直接:

# grep -Li 1234 /root/test/*
/root/test/test2.txt
/root/test/test.txt
[root@vps test]#

或在"中指定"选项" -type f" ...即使你使用find你也会花更多的时间(首先是文件列表然后再制作grep)。

答案 3 :(得分:0)

通过find和grep查找markdown文件以查找不匹配项

$ find. -name '* .md' -print0 | xargs -0 grep -iL "title"

直接使用grep的-L搜索仅包含降价文件而没有标题的文件

$ grep -iL "title" -r ./* --include '* .md'