我必须在一个令人难以置信的旧版应用程序中更改一些连接字符串,并且制作它的程序员认为用连接字符串覆盖整个应用程序是一个好主意。
Visual Studio的“当前项目”搜索速度令人难以置信,我不相信Windows搜索。
那么,那里最好的免费,非索引文本搜索工具是什么?它应该做的就是返回一个列表,其中包含文件夹及其子文件夹中包含所需字符串的文件。
我正在运行Windows 2003 Server。
答案 0 :(得分:346)
我是Notepad++中在文件中找到对话框的粉丝。 Bonus :它是免费的。
答案 1 :(得分:155)
还有一个名为findstr.exe
的Windows内置程序,您可以使用该程序在文件中进行搜索。
>findstr /s "provider=sqloledb" *.cs
答案 2 :(得分:60)
Windows Grep做得非常好。
编辑:开发人员不再维护或提供Windows Grep。另一个下载链接位于:Windows Grep - alternate
答案 3 :(得分:39)
Agent Ransack是另一个好人。它快速,免费,并具有一些其他很好的功能,如shell集成。
答案 4 :(得分:34)
我喜欢AstroGrep。结果显示在列表中。单击一行会显示整行,作为突出显示命中的预览。 它似乎很快,很精简,而且是免费的。 在Windows 7,8,10和Windows Server 2008 R2上测试过。 允许正则表达式。
AstroGrep是Microsoft Windows GUI文件搜索(grep)实用程序。它的功能包括正则表达式,多功能打印选项,存储最近使用的路径,并具有“上下文”功能,非常适合查看源代码
参考:AstroGrep
答案 5 :(得分:11)
我是grepWin的粉丝。它是免费的,轻量级的,可以从资源管理器外壳中获得。我不想刻意去寻找并启动一个程序来搜索某些东西。我可以右键单击资源管理器并启动它。
答案 6 :(得分:10)
SeekFast可以非常方便地搜索文件中的文本 - 文本文件,MS Word,Excel,OpenOffice等。它有一个免费版本。
答案 7 :(得分:9)
FileSeek。这很快,而且是免费的。它可以找到文本字符串,或匹配正则表达式。
答案 8 :(得分:8)
Visual Studio在文件夹中的搜索是我发现的最快的。
我相信它只会智能地搜索文本(非二进制)文件,并且在同一文件夹中的后续搜索速度非常快,与其他工具(可能是文本文件适合Windows磁盘缓存)不同。
VS2010在常规硬盘上,没有SSD,用1分钟搜索一个20GB的文件夹,包含26k文件,源代码和二进制文件混合在一起。搜索到15k文件 - 其余文件可能由于是二进制文件而被跳过。在同一文件夹中的后续搜索大约为秒(直到内容从缓存中被逐出)。
我找到的同一文件夹中最接近的是grepWin。大约3分钟。我排除了大于2000KB的文件(默认)。 "包含二进制文件"设置似乎在加速搜索方面没有任何作用,看起来二进制文件仍然被触摸(错误?),但它们不会出现在搜索结果中。后续搜索都需要相同的3分钟 - 无法利用硬盘缓存。如果我限制为小于200k的文件,则初始搜索为2.5分钟,后续搜索大约为秒,大约与VS一样快 - 在缓存中。
代理Ransack和FileSeek在该文件夹上都非常慢,大约20分钟,因为搜索所有内容,包括巨型多GB二进制文件。根据资源监视器,他们每秒搜索大约10-20MB。
更新:可以将代理Ransack设置为搜索特定大小的文件,并使用< 200KB截止时间1:15分钟进行全新搜索,使用5秒进行后续搜索。比grepWin快,和整体VS一样快。如果你想在标签中保留几个搜索并且你不想污染VS最近搜索过的文件夹列表,并且你想要保留搜索二进制文件的能力,那真的很不错,VS没有&#39似乎想做。代理Ransack还创建了一个资源管理器上下文菜单条目,因此可以从文件夹轻松启动。与grepWin相同,但更好的UI和更快。
我的新搜索设置是Agent Ransack for contents和Everything for files names(很棒的工具,即时结果!)。
答案 9 :(得分:3)
TextPad对于这类事情真的很好。您可以免费使用它,但是会收到一条警告消息,要求您购买它。除此之外,它是一个很好的工具。
答案 10 :(得分:2)
如果您不想安装非Microsoft工具,请从MicroSoft Sysinternals下载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
答案 11 :(得分:2)
您可以安装cygwin(需要一些时间)并使用grep -R。
答案 12 :(得分:1)
我倾向于总是使用grep或从unxutils中找到。这在ms-windows上很有效。
答案 13 :(得分:1)
FileSearchy。它快速而且免费。它确实有索引,但仅适用于文件名而不是内容。
答案 14 :(得分:1)
我推荐GOW而不是cygwin,因为它更轻,但仍然包括grep以及另外130个左右的* nix命令行工具,18MB而不是> 100MB
答案 15 :(得分:1)
如果您正在寻找基于控制台的实用程序,那么您可以参考此网址并为自己创建一个。
找到的是文件夹中的搜索文本列表,并且如果某个文件包含文本也会返回与同名匹配的返回文件
答案 16 :(得分:0)
我可以推荐 ack - 一个带有linux root的命令行程序,幸运的是在Windows上运行得很好。它比grep更快,它忽略了git / subversion目录和二进制文件,输出更容易理解。输入ack比grep快25%;)
我在babun(cygwin)和git的msys上尝试过它 - 非常棒。它是用perl编写的,所以也应该在cmd.exe中使用perl安装在操作系统的某个地方。
对于Windows,您可以尝试“Seekfast”它会自动完成所有操作。这里https://seekfast.org安全链接。