我搜索过这个,但没找到,也许我使用的术语不正确。我正在寻找 Windows 7 中的文件搜索实用程序,它将:
- 在特定目录中搜索文件
- 搜索文件内容
- 预览找到的线条(最好在找到的线条周围加上几条线条)
- 将搜索词保存为预设(如 *.aspx.cs 或 *.cs 或两者的组合)
- 在办公文档中搜索
Notepad++ 可以做到这一点,但我正在寻找可以添加索引的程序,这样速度会更快。Locate32 可以完成大部分工作,但没有预览。似乎我找到的所有文件搜索实用程序都不能满足我的要求。
答案1
好吧,既然您使用的是 Windows 7,那么您可以在 powershell 中执行此操作。首先,您需要打开 Powershell 控制台,然后运行以下一些示例命令(您可以在 powershell 命令行中输入“Get-Help Select-String -example”来查看所有这些示例及更多内容):
C:\PS>select-string -path *.xml -pattern "the the"
描述
此命令搜索当前目录中所有带有 .xml 文件扩展名的文件,并显示这些文件中包含字符串“the the”的行。
C:\PS>select-string -path $pshome\en-US\*.txt -pattern "@"
描述
此命令搜索 Windows PowerShell 概念帮助文件 (about_*.txt) 以获取有关使用 at 符号 (@) 的信息。
为了指示路径,此命令使用 $pshome 自动变量的值,该变量存储 Windows PowerShell 安装目录的路径。在此示例中,该命令搜索 en-US 子目录,其中包含 Windows PowerShell 的英语 (US) 语言帮助文件。
C:\PS>get-childitem c:\windows\system32\* -include *.txt -recurse |
select-string -pattern "Microsoft" -casesensitive
描述
此命令检查 C:\Windows\System32 子目录中所有带有 .txt 文件扩展名的文件,并搜索字符串“Microsoft”。CaseSensitive 参数表示“Microsoft”中的“M”必须大写,其余字符必须小写,Select-String 才能找到匹配项。
C:\PS>$f = select-string -path audit.log -pattern "logon failed" -context 2, 3
C:\PS> $f.count
C:\PS> ($f)[0].context | format-list
描述
第一个命令在 Audit.Log 文件中搜索短语“登录失败”。它使用 Context 参数捕获匹配项前 2 行和匹配项后 3 行。
第二条命令使用对象数组的 Count 属性来显示找到的匹配项的数量,在本例中为 2。
第三个命令显示存储在第一个 MatchInfo 对象的 Context 属性中的行。它使用数组表示法来指示第一个匹配项(从零开始的数组中的匹配项 0),并使用 Format-List cmdlet 将 Context 属性的值显示为列表。
输出由两个 MatchInfo 对象组成,每个匹配项对应一个对象。上下文行存储在 MatchInfo 对象的 Context 属性中。