在当前目录下的所有文件中查找特定单词

kso*_*sor 7 command-line grep

我想为使用文本“Numlock”的任何文件查找所有文件,并打印路径和文件名 - 无论是小写、大写还是混合大小写。

我应该使用什么命令?

ste*_*ver 14

您可以使用grep -r递归搜索文件内容,例如

grep -Iri 'numlock' /path/to/search/dir/
Run Code Online (Sandbox Code Playgroud)

/path/to/search/dir/您要从中开始搜索的顶级目录在哪里- 您可以使用,/但要准备好花费很长时间。

一些变化,取决于您的确切要求:

  • 如果您希望遵循符号链接-r-R请将选项更改为
  • 添加-l选项以仅打印找到的文件的名称

I告诉grep来忽略二进制文件和i做搜索不区分大小写。


如果您的 grep 版本不支持递归搜索,您可以使用 find 和 grep 的组合来实现相同的目的,例如

find /path/to/search/dir/ -type f -exec grep --color -HIi 'numlock' {} +
Run Code Online (Sandbox Code Playgroud)


Jac*_*ijm 3

下面的脚本递归地搜索给定目录中的(文本)文件,查找给定字符串的出现情况,无论它是大写还是小写,或者它们的任意组合。

它将为您提供找到的匹配项的列表、文件的路径、文件名以及文件中字符串的实际出现次数,如下所示:

/path/to/file1 ['numlock', 'numlocK']
/longer/path/to/file2 ['NuMlOck']
Run Code Online (Sandbox Code Playgroud)

ETC。

为了限制搜索时间,我会在特定目录中查找匹配项,因此不会查找 2TB 的文件;)。

使用方法:

1]复制下面的文本,将其粘贴到一个空文本文件(gedit)中。2] 编辑标题部分中的两行以定义要查找的字符串和要搜索的目录。3]保存为searchfor.py。4] 要运行它:打开终端,输入python3+ space,然后将脚本拖到终端窗口并按回车键。找到的匹配列表将出现在终端窗口中

如果出现错误,脚本会提及它。

/path/to/file1 ['numlock', 'numlocK']
/longer/path/to/file2 ['NuMlOck']
Run Code Online (Sandbox Code Playgroud)

  • 我不清楚为什么这比递归 grep 更好? (3认同)