如何在 Linux 上查找所有不包含特定文本的文件如何在 Linux 上查找所有不包含特定文本的文件如何在 Linux 上查找所有不包含特定文本的文件如何在 Linux 上查找所有不包含特定文本的文件
  • 业务
  • 产品
  • 技术
  • 行业
  • 目标
  • 支持
  • 关于
  • 联系我们
  • 登录
✕

如何在 Linux 上查找所有不包含特定文本的文件

发表 admin at 2025年2月28日
类别
  • Linux
标签

了解如何在 Linux 命令行中列出目录中不包含特定文本的所有文件。

如何在Linux命令行中查找所有不包含特定文本的文件?

有多种方法可以在 Linux 命令行中查找不包含特定文本的文件。我最喜欢的方法是在这里使用 Grep 命令。

这与我查找包含特定文本的所有文件的操作类似。您可以使用带有选项“L”而不是“l”的相同 grep 命令来实现此目的。

grep -RiL "specific_text" <search_directory>
  • R 选项在子目录和符号链接中递归搜索

  • i 选项用于不区分大小写的搜索

  • L选项将只打印不包含特定文本的文件名

这将帮助您找到给定目录及其子目录中不包含指定字符串的所有文件。

让我用一个例子来展示这一点。

列出所有不包含文本的文件

我有以下文件和子目录:

-rw-r--r-- 1 abhishek abhishek 12817 Sep 22 12:28 file1.txt
-rwxrw-r-- 1 abhishek abhishek 12813 Sep 22 12:29 file2.txt
-rw-r--r-- 1 abhishek abhishek 12817 Sep 22 12:29 file3.txt
-rw-rw-r-- 1 abhishek abhishek   311 Sep 22 12:19 line.txt
drwxrwxr-x 2 abhishek abhishek  4096 Aug 22 16:58 new
drwxrwxr-x 2 abhishek abhishek  4096 Aug 22 17:02 old
-rw-r--r-- 1 abhishek abhishek 12817 Sep 22 12:28 sample.txt

我想列出所有不包含字符串 LHB 的文件。

grep -RiL LHB .

这是我得到的结果。

./line.txt
./old/gnome-console-voiceover
./file2.txt
./.some_config
./new/my_file.txt

正如您所看到的,它显示了当前目录以及子目录中的所有不匹配文件。

不要进入子目录

如果您只想在当前目录中搜索而不是子目录中怎么办?

您可以指定 * 而不是 . 并删除 Grep 的递归选项。

grep -iL LHB *

使用 * 时,它会搜索当前目录中的所有文件。这是现在的输出。

abhishek@linux:~/test$ grep -iL LHB *
file2.txt
line.txt
grep: new: Is a directory
new
grep: old: Is a directory
old

该错误消息是因为 grep 只能直接作用于文件名,而不能作用于目录名。您可以像这样跳过目录:

grep -iL -d skip LHB *

这给出了更清晰的输出:

abhishek@linux:~/test$ grep -iL -d skip LHB *
file2.txt
line.txt

如果您只想在匹配特定模式的文件中搜索,可以将 grep 与 find exec 命令结合起来:

find . -iname "*.txt" -exec grep -Li "mystring" {} \+

你是否使用其他方法来查找Linux中与该字符串不匹配的所有文件?请在评论部分与我们分享。

©2015-2025 Norria Group support@norria.com