我必须在一个令人难以置信的旧应用程序中更改一些连接字符串,而使它的程序员认为用整个地方的连接字符串粘贴整个应用程序是一个好主意。
Visual Studio的“当前项目”搜索速度非常慢,而且我不相信Windows搜索。
那么,那里最好的免费的,非索引文本搜索工具是什么?它所要做的就是返回一个列表,其中包含在文件夹及其子文件夹中包含所需字符串的文件。
我正在运行Windows 2003 Server。
我必须在一个令人难以置信的旧应用程序中更改一些连接字符串,而使它的程序员认为用整个地方的连接字符串粘贴整个应用程序是一个好主意。
Visual Studio的“当前项目”搜索速度非常慢,而且我不相信Windows搜索。
那么,那里最好的免费的,非索引文本搜索工具是什么?它所要做的就是返回一个列表,其中包含在文件夹及其子文件夹中包含所需字符串的文件。
我正在运行Windows 2003 Server。
Answers:
原始答案
Windows Grep确实做到了这一点。
编辑: Windows Grep不再由开发人员维护或提供。备用下载链接在这里:Windows Grep-备用
当前答案
Visual Studio Code具有出色的跨文件搜索和替换功能。它非常快,支持正则表达式和替换前的实时预览。
我是Notepad ++中“ 文件查找”对话框的粉丝。奖励:免费。
.docm
一样.docx
,.xlsm
和.xlsx
实际上压缩的XML文档。
还有一个Windows内置程序findstr.exe
,可用来在文件中搜索。
>findstr /s "provider=sqloledb" *.cs
FINDSTR: Cannot open ???????????.txt
我喜欢AstroGrep。结果显示在列表中。单击一行可将整行显示为预览,突出显示匹配项。它似乎非常快,精简并且是免费的。在Windows 7、8、10和Windows Server 2008 R2上进行了测试。允许使用正则表达式。
AstroGrep是Microsoft Windows GUI文件搜索(grep)实用程序。它的功能包括正则表达式,多种打印选项,存储最近使用的路径以及具有“上下文”功能,非常适合查看源代码
参考:AstroGrep
node_modules
或的文件夹时非常有帮助bower_components
。
self == happy
Visual Studio在文件夹中的搜索是迄今为止最快的。
我相信它可以智能地仅搜索文本(非二进制)文件,并且在同一文件夹中进行后续搜索非常快,这与其他工具不同(文本文件可能适合Windows磁盘缓存)。
常规硬盘上的VS2010(没有SSD)需要1分钟的时间来搜索包含26k文件,源代码和二进制文件的20GB文件夹。搜索了15k个文件-其余文件可能由于二进制文件而被跳过。随后在同一文件夹中进行搜索的时间约为秒(直到从缓存中清除所有内容)。
我找到的下一个最接近的文件夹是grepWin。大约3分钟。我排除了大于2000KB(默认)的文件。“包括二进制文件”设置似乎对加快搜索没有任何作用,似乎二进制文件仍被触及(错误?),但它们未显示在搜索结果中。后续搜索都需要3分钟的时间-无法利用硬盘驱动器缓存。如果我将文件限制为小于200k,则在缓存中,初始搜索为2.5分钟,后续搜索为秒级,大约与VS一样快。
Agent Ransack和FileSeek在该文件夹上的速度都很慢,大约需要20分钟,原因是要搜索所有内容,包括巨大的千兆字节二进制文件。根据资源监控器,它们以每秒10-20MB的速度搜索。
更新:可以将Agent Ransack设置为搜索特定大小的文件,并且使用<200KB的截止值进行全新搜索的时间为1:15分钟,对于后续搜索的时间为5秒。比grepWin更快,与VS整体一样快。如果您想在选项卡中保留几次搜索,并且不想污染VS最近搜索的文件夹列表,并且想要保留搜索二进制文件的能力,这实际上非常好,而VS似乎不想这么做。特工Ransack还会创建一个资源管理器上下文菜单项,因此很容易从文件夹中启动。与grepWin相同,但UI更好,更快。
我的新搜索设置是内容的Agent Ransack和文件名的Everything(真棒工具,即时结果!)。
如果您不想安装非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
010 Editor
在0秒内搜索huuuge文件。