无需索引即可在文件中搜索字符串的工具[关闭]

Posted

技术标签:

【中文标题】无需索引即可在文件中搜索字符串的工具[关闭]【英文标题】:Tools to search for strings inside files without indexing [closed] 【发布时间】:2010-09-23 23:52:02 【问题描述】:

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

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

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

我正在运行 Windows 2003 Server。

【问题讨论】:

010 Editor 在 0 秒内搜索 huuuge 文件。 Depeche View 胜过此页面上的所有其他内容,毫无疑问。您需要花几分钟时间阅读帮助文件并学习一些快捷方式。 stahlworks.com/dev/depeche-view.html 我也经常使用它,但是它会强制您单击每个结果文件以在右侧窗格中查看内容匹配项。此外,右侧窗格中的文件内容不可缩放(字体太小)。 这对于软件工程来说是一个很好的问题,但在 SO 上却是题外话。哪个 SE 网站是主题?参见例如SE.SE questions on 'search codebase'我们应该迁移这个问题,以便它可以重新打开! 查看应用商店中的文件内容查找器(免责声明 - 我是开发人员)。它可以搜索文本/源文件,也可以搜索 pdf、doc(x)、xls(x) 甚至扫描的 jpg/png 文件 - microsoft.com/en-au/p/file-content-finder/9mzc4sk6j6bp 【参考方案1】:

我是Notepad++ 中的Find-In-Files 对话框的粉丝。 奖励:它是免费的。

【讨论】:

很遗憾,它不能——或不能——搜索所有 Microsoft Word 文件。我怀疑“.doc”和“.docm”之间的区别 @CarlWitthoft .docm.docx.xlsm.xlsx 实际上是压缩的 XML 文档。 它适用于具有正常文件数量的小型文件夹,挂起具有许多文件夹的大型文件夹,至少在我使用笔记本电脑时是这样。使用功能强大的 PC 时速度更快。此外,在搜索过程中,无法打开任何其他文件。 找到我的文字。但是,不允许我在结果中选择要替换的值和保留的值。全部还是全部? 不知道这甚至是记事本++中的一个选项。查找丢失文件的绝佳解决方案!但是,它似乎确实存在大文件大小的问题。有时它会给出“文件太大而无法打开”的错误。【参考方案2】:

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

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

【讨论】:

简单高效! 这比 Windows 资源管理器快得多,并且实际上找到了我正在搜索的文本,而使用 Windows 资源管理器并没有为我产生搜索结果。谢谢。 对我来说,这个主题的最佳答案,因为您不需要安装任何东西。就我而言,我不得不补充添加一些参数,因为屏幕上显示的信息太多。参数 /M 仅列出包含我正在查找的信息的文件名。要访问 findstr 命令的手册,请键入“findstr /?”在控制台中。 这是一个很棒的工具,但它似乎无法读取文件名中的西里尔字符。例如:FINDSTR: Cannot open ???????????.txt findstr 不支持 UTF16 文本。【参考方案3】:

原答案

Windows Grep 做得很好。

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

当前答案

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

【讨论】:

ss64.com/nt/findstr.html 在我的机器 (Windows 7) 上,它崩溃了两次。我会试试别的。 它很旧,我也崩溃了。即使对于某些目标来说 grepWin 并不完美,imoh 更好 AstroGrep 速度也很快,而且没有安装完毕 在 Windows 7 上运行良好 - 没有崩溃【参考方案4】:

我喜欢 AstroGrep。结果显示在列表中。单击一行可将整行显示为突出显示该命中的预览。 它似乎很快,精简而且免费。 在 Windows 7、8、10 和 Windows Server 2008 R2 上测试。 允许正则表达式。

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

参考:AstroGrep

【讨论】:

关闭此处列出的所有其他内容,这是唯一可以为文件夹指定排除模式的选项。在尝试跳过 node_modulesbower_components 之类的文件夹时非常有用。 非常好的软件,速度快,可配置,并显示文件以及相关上下文 “快速”值得再次提及...self == happy【参考方案5】:

Visual Studio 在文件夹中的搜索是迄今为止我发现的最快的。

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

普通硬盘驱动器上的 VS2010,没有 SSD,需要 1 分钟才能搜索 20GB 文件夹,其中包含 26k 文件、源代码和二进制文件。搜索了 15k 个文件 - 由于是二进制文件,其余文件可能被跳过。同一文件夹中的后续搜索大约是几秒钟(直到东西被从缓存中清除)。

我为同一个文件夹找到的下一个最接近的是 grepWin。 3分钟左右。我排除了大于 2000KB 的文件(默认)。 “包括二进制文件”设置似乎对加快搜索没有任何作用,看起来二进制文件仍然被触及(错误?),但它们没有出现在搜索结果中。随后的搜索都需要相同的 3 分钟 - 无法利用硬盘缓存。如果我限制小于 200k 的文件,则初始搜索为 2.5 分钟,随后的搜索大约为秒,大约与缓存中的 VS 一样快。

Agent Ransack 和 FileSeek 在该文件夹上都非常慢,大约 20 分钟,因为要搜索所有内容,包括巨大的数 GB 二进制文件。根据资源监视器,他们以大约每秒 10-20MB 的速度搜索。

更新:Agent Ransack 可以设置为搜索特定大小的文件,使用

我的新搜索设置是针对内容的 Agent Ransack 和针对文件名的 Everything(很棒的工具,即时结果!)。

【讨论】:

【参考方案6】:

如果您不想安装非 Microsoft 工具,请从 Microsoft Sysinternals download 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

【讨论】:

以上是关于无需索引即可在文件中搜索字符串的工具[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式搜索 PDF 文件中的文本并告知页码? [关闭]

Cmder命令行工具在Windows系统中的配置

如何使用搜索引擎搜索特殊字符? [关闭]

如何使用 Python 或 posix 工具搜索和替换字符串中的匹配括号

无需手动连接设备即可在 iOS 中部署设备

无需创建帐户即可在贝宝上付款