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

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

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

我应该使用什么命令?

答案1

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

grep -Iri 'numlock' /path/to/search/dir/

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

有一些变化,取决于您的具体要求:

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

告诉Igrep 忽略二进制文件并且i使搜索不区分大小写。


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

find /path/to/search/dir/ -type f -exec grep --color -HIi 'numlock' {} +

答案2

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

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

/path/to/file1 ['numlock', 'numlocK']
/longer/path/to/file2 ['NuMlOck']

ETC。

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

使用方法:

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

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

#!/usr/bin/python3
import os
#-----------------------------------------------------
# give the searched word here in lowercase(!):
searchfor = "string_to_look_for"
# give the aimed directory here:
searchdir = "/path/to/search"
#-----------------------------------------------------
wordsize = len(searchfor)
unreadable = []
print("\nFound matches:")
for root, dirs, files in os.walk(searchdir, topdown=True):
    for name in files:
        file_subject = root+"/"+name
        try:
            with open(file_subject) as check_file:
                words = check_file.read()
                words_lower = words.lower()
                found_matches_list = [i for i in range(len(words_lower)) if words_lower.startswith(searchfor, i)]
                found_matches = [words[index:index+wordsize] for index in found_matches_list]
                if len(found_matches) != 0:
                    print(file_subject, found_matches)
                else:
                    pass
        except Exception:
            unreadable.append(file_subject)
if len(unreadable) != 0:
    print("\ncould not read the following files:")
    for item in unreadable:
        print("unreadable:", item)

相关内容