搜索文件中没有索引的字符串的工具

我必须在一个非常古老的遗留应用程序中更改一些连接字符串,制作这个应用程序的程序员认为在整个应用程序中到处粘贴连接字符串是一个很好的主意。

VisualStudio 的“当前项目”搜索速度慢得难以置信,而且我不信任 Windows 搜索。

那么,最好的免费、非索引的文本搜索工具是什么呢?它所要做的就是返回一个包含文件的列表,这些文件在一个文件夹及其子文件夹中包含所需的字符串。

我正在运行 Windows2003服务器。

389252 次浏览

我是 记事本 + + 文件中的查找对话框的粉丝。 意外收获: 它是免费的。

enter image description here

原始答案

Windows Grep 在这方面做得非常好。

编辑: Windows Grep 不再由开发人员维护或提供。这里有一个备用的下载链接: Windows Grep 备用链接

当前答案

Visual Studio Code 具有优秀的跨文件搜索和替换功能。它非常快,支持正则表达式和现场预览之前更换。

enter image description here

还有一个名为 findstr.exe的 Windows 内置程序,您可以使用它在文件中进行搜索。

>findstr /s "provider=sqloledb" *.cs

我喜欢 AstroGrep。结果显示在一个列表中。点击一行显示整个行作为突出显示命中的预览。 它似乎是相当快,精益和它是免费的。 在 Windows 7,8,10和 Windows Server 2008 R2上测试。 允许正则表达式。

Latest AstroGrep Screenshot

AstroGrep 是一个 MicrosoftWindowsGUI 文件搜索(grep)实用程序。它的特性包括正则表达式,多功能的打印选项,存储最新使用的路径,并有一个“上下文”功能,这是非常好的查看源代码

参考资料: AstroGrep

如果你不想安装非微软的工具,请从微软的系统内部 下载 STRINGS.EXE,并作出这样一个过程:

@echo off
if '%1' == '' goto NOPARAM
if '%2' == '' goto NOPARAM
if not exist %1 goto NOFOLDER


echo ------------------------------------------
echo - %1 : folder
echo - %2 : string to be searched in the folder
echo - PLEASE WAIT FOR THE RESULTS ...
strings -s %1\* | findstr /i %2 > grep.txt
notepad.exe grep.txt


goto END


:NOPARAM rem - input command not correct
echo ====================================
echo Usage of GREP.CMD:
echo   Grep "SearchFolder" SearchString
echo Please specify all parameters
echo ====================================
goto END


:NOFOLDER
echo Folder %1 does not exist
goto END


:END rem - exit

到目前为止,VisualStudio 在文件夹中的搜索速度是我发现的最快的。

我相信它只智能地搜索文本(非二进制)文件,并且在同一个文件夹中的后续搜索非常快,不像其他工具(可能文本文件适合在 Windows 磁盘缓存中)。

VS2010在一个普通的硬盘驱动器,没有固态硬盘,需要1分钟搜索20GB 文件夹与26k 文件,源代码和二进制文件混在一起。搜索了15k 个文件——其余的可能由于是二进制文件而被跳过。在同一个文件夹中的后续搜索按秒数排序(直到从缓存中清除所有内容)。

对于同一个文件夹,我找到的另一个最接近的文件夹是 grepWin。大概三分钟。我排除了大于2000KB (默认)的文件。“包含二进制文件”设置似乎没有做任何方面的加速搜索,它看起来像二进制文件仍然触摸(错误?)但是搜索结果里没有。随后的搜索都需要相同的3分钟-不能利用硬盘缓存的优势。如果我限制小于200k 的文件,初始搜索是2.5分钟,随后的搜索是在几秒钟的顺序,大约快于 VS-在缓存中。

Ransack 探员和 FileSeek 探员在那个文件夹上的搜索速度都很慢,大约20分钟,因为他们搜索了所有的东西,包括巨大的几十亿字节的二进制文件。根据资源监视器,它们的搜索速度约为每秒10-20MB。

更新: Agent Ransack 可以被设置为搜索特定大小的文件,使用 < 200KB 的截止值,新搜索为1:15分钟,后续搜索为5分钟。比 grepWin 更快,总体上也和 VS 一样快。如果你想在标签页中保留多个搜索,并且不想污染 VS 最近搜索的文件夹列表,而且你想保留搜索二进制文件的能力,这是 VS 似乎不愿意做的,那么这实际上是非常不错的。Agent Ransack 还创建了一个资源管理器上下文菜单项,因此很容易从一个文件夹启动。和 grepWin 一样,但用户界面更好,速度更快。

我的新搜索设置是代理 Ransack 的内容和文件名的一切(真棒的工具,即时结果!)。