我们使用的应用程序使用标记/p:ServerAddress="192.168.40.40"
/p:ServerUser="YourmacRemoteSSHuser"
将配置字符串另存为XML。我正在编写一个备份脚本,该脚本需要知道所指向的数据库。我已经在不同计算机上的不同文件中找到了此字符串,具体取决于其安装方式。
首先,我尝试仅在资源管理器中使用Win10的搜索。无论我尝试哪种选项,都无法找到该字符串。我尝试在目录树中上下移动,甚至选择了文本文件所在的文件夹,但仍然找不到它。我已打开所有搜索选项,有什么想法吗?
但是我的主要问题是,现在是否存在用于在.Net中查找文件中字符串的规范解决方案?我在这里找到许多示例,但是它们通常使用外部带壳的实用程序,或者只是读取每个文件并进行搜索。一种有趣的解决方案是使用外部索引器,但这超出了该项目的范围。
答案 0 :(得分:1)
简短的回答是否。在C#中,没有规定的方法可以执行此操作,因为您的处理方式将根据您的用例而有所不同。但是,有很多选择可以执行这种类型的操作。
首先,让我们考虑一下,如果要搜索文件中的内容,则有时必须打开文件并查看其内容。您在上一段中提到了使用外部索引器的概念,它可以做到这一点。有趣的是,这与Windows Search要做的事情完全相同,因此,让我们从查看它开始。
执行Windows搜索时,它将使用搜索索引来查找文件。如果找不到要搜索的文件,则可能有一些原因。
假设所有这些内容都已正确配置,则执行搜索时应该会看到结果。但是,在我的机器上执行connectionStrings
的搜索时,我没有得到任何预期的web.config文件。进行更深入的研究时,Windows搜索仅配置为Index Properties Only
个文件的.config
而不是Index Properties and File Contents
的文件。您可能不应该将这些文件也编入索引可能是出于安全方面的充分理由,但我将其留在另一篇文章中。
总的来说,我认为尝试使用Windows Search或其他库来执行此操作对于这样的基本任务来说是多余的。我假设以下情况。
假设您了解这两件事,查找和搜索文件的效率应该很好。您可能要遵循以下概述的模式。
要增强此解决方案,您可以使用临时缓存,在其中跟踪发现需要备份的每个匹配文件。您可以将此缓存保存到文件中(带有时间戳),并且仅在设置的时间段后重新扫描。这样,在以后运行备份实用程序时,您实际上不必搜索仅备份文件的文件系统。
另一种选择是存储所有“误报”文件的黑名单,这样您以后就不会搜索文件内容了。
我希望这会有所帮助,如果您有任何疑问,请告诉我。