在 windows 上使用正则表达式在当前驱动器的所有文件中搜索字符串

Search for string in all files in current drive using regex on windows

我正在尝试在我的硬盘上搜索电子邮件地址。我知道它应该是这样的:

b************m@e******.com

这就是我想出这个正则表达式的原因:

b.{12}m@e.{6}.com

我发现 findstr 可能对这项工作有用并尝试过:

findstr /R b.{12}m@e.{6}\.com c:\*.*

但即使我添加了一个包含与我的正则表达式匹配的电子邮件的文件,它也找不到任何东西,例如:b8726ngs.poinm@e123456.com

您可以尝试使用以下 PowerShell 命令来执行此操作(请注意,这可能需要很长时间 运行,具体取决于您从哪里开始):

Get-ChildItem *.txt -Recurse -File | Where-Object { (Get-Content $_.FullName) -match "b.{12}m@e.{6}.com" }

对于您无权访问的磁盘区域,您将收到红色错误消息。 运行 PowerShell 作为管理员进行尽可能广泛的搜索。

如果需要,请将文件路径添加到 Get-ChildItem 以便设置基本目录,否则它将从您当前所在的目录开始。

参数说明:

  • -Recurse搜索当前目录和所有子目录。
  • -File returns 只有文件(不是目录)。
  • Get-Content $_.FullName获取每个文件的内容。
  • -match 执行正则表达式比较。

有正则表达式,然后有正则表达式。貌似findstr不是很强大

findstr /R "b............m@e......\.com" *.*

这只是在 findstr 部分不起作用。
采取适当的预防措施,例如在只包含可读文件的目录中。