无需索引即可在文件内搜索字符串的工具


170

我必须在一个令人难以置信的旧应用程序中更改一些连接字符串,而使它的程序员认为用整个地方的连接字符串粘贴整个应用程序是一个好主意。

Visual Studio的“当前项目”搜索速度非常慢,而且我不相信Windows搜索。

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

我正在运行Windows 2003 Server。


010 Editor在0秒内搜索huuuge文件。
2015年

Depeche View击败了此页面上的其他所有内容,令人垂涎。您需要花费一些时间来阅读帮助文件并了解其中的一些快捷方式。stahlworks.com/dev/depeche-view.html
BVernon

我也经常使用它,但是它迫使您单击每个结果文件以在右窗格中查看匹配的内容。另外,右窗格中的文件内容不可缩放(字体大小太小)。
Meryan

对于软件工程来说,这是一个很好的问题,但在SO上却是题外话。它在哪个SE网站上是热门话题?参见“搜索代码库”中的SE.SE问题。我们应该迁移此问题,以便可以重新打开它!
smci

1
在应用商店上查看“文件内容查找器”(免责声明-我是开发人员)。它可以搜索文本/源文件,也可以搜索pdf,doc(x),xls(x),甚至可以扫描jpg / png文件-microsoft.com/en-au/p/file-content-finder/9mzc4sk6j6bp
Geo Systems

Answers:


60

原始答案

Windows Grep确实做到了这一点。

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

当前答案

Visual Studio Code具有出色的跨文件搜索和替换功能。它非常快,支持正则表达式和替换前的实时预览。

在此处输入图片说明



10
在我的计算机上(Windows 7),它崩溃了两次。我会尝试其他的东西。
B. Clay Shannon

2
它很旧,也让我崩溃了。即使对于某些目标而言并不完美,grepWin还是更好的哦
Paolo

9
AstroGrep速度也很快,而且绝对不会
Zorb

工作得很好,我对Windows 7的-没有崩溃
w5m

364

我是Notepad ++中“ 文件查找”对话框的粉丝。奖励:免费。

在此处输入图片说明


不幸的是,哪个不能或不能搜索所有Microsoft Word文件。我怀疑“ .doc”和“ .docm”之间的区别
Carl

11
@CarlWitthoft .docm一样.docx.xlsm.xlsx实际上压缩的XML文档。
伊恩·博伊德

1
它适用于文件数量正常的小型文件夹,适用于包含许多文件文件夹的大型文件夹,至少在我使用笔记本电脑时,它会挂起。使用功能强大的PC时速度更快。此外,在搜索时,无法打开任何其他文件。
Mohammed Joraid 2015年

找到我的文字。但是,不允许我在结果中选择要替换和保留的值。全部还是全部?
ofer.sheffer

5
不知道这甚至是记事本++中的一个选项。查找丢失的文件的绝佳解决方案!但是,大文件似乎确实有问题。有时会出现“文件太大而无法打开”错误。
约翰

167

还有一个Windows内置程序findstr.exe,可用来在文件中搜索。

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

3
简单高效!
Markus Fantone

这比Windows资源管理器快得多,并且实际上找到了我要搜索的文本,而使用Windows资源管理器却没有为我生成搜索结果。谢谢。
mbomb007

1
对我来说,关于此主题的最佳答案是因为您不需要安装任何东西。在我的情况下,我不得不补充一些参数,因为太多的信息无法显示在屏幕上。/ M参数仅列出具有我要查找的信息的文件名。要访问findstr命令的手册,请键入“ findstr /?”。在控制台中。
亚历山德拉·里贝罗

这是一个很好的工具,但似乎无法读取文件名中的西里尔字符。例如:FINDSTR: Cannot open ???????????.txt
Artem Russakovskii

1
findstr不支持UTF16文本。
David Bremner

34

我喜欢AstroGrep。结果显示在列表中。单击一行可将整行显示为预览,突出显示匹配项。它似乎非常快,精简并且是免费的。在Windows 7、8、10和Windows Server 2008 R2上进行了测试。允许使用正则表达式。

最新的AstroGrep屏幕截图

AstroGrep是Microsoft Windows GUI文件搜索(grep)实用程序。它的功能包括正则表达式,多种打印选项,存储最近使用的路径以及具有“上下文”功能,非常适合查看源代码

参考:AstroGrep


7
在这里列出的所有其他选项中,这是唯一可以指定文件夹的排除模式的选项。尝试跳过类似node_modules或的文件夹时非常有帮助bower_components
Mrchief

1
很好的软件,快速,可配置的显示文件以及相关的上下文
HanniBaL90 '17

1
和“快速”值得再次提及...self == happy
cssyphus

9

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(真棒工具,即时结果!)。


3

如果您不想安装非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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.