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

Regex 在windows上使用正则表达式搜索当前驱动器中所有文件中的字符串,regex,windows,findstr,Regex,Windows,Findstr,我正试图在我的硬盘上搜索电子邮件地址。我知道应该是这样的: b************m@e******网站 这就是为什么我想出了这个正则表达式: b、 {12}m@e.{6} 网站 我发现findstr对这项工作很有用,并尝试: findstr /R b.{12}m@e.{6}\.com c:\*.* 但是,即使我添加了一个包含电子邮件的文件,该文件应该与我的正则表达式匹配,它也找不到任何东西,例如:b8726ngs。poinm@e123456.com您可以尝试使用以下PowerShell命

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

b************m@e******网站

这就是为什么我想出了这个正则表达式:

b、 {12}m@e.{6} 网站

我发现
findstr
对这项工作很有用,并尝试:

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

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

您可以尝试使用以下PowerShell命令来执行此操作(注意,这可能需要很长时间才能运行,具体取决于启动位置):

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

添加文件路径以获取ChildItem,以便根据需要设置基本目录,否则它将在您当前所在的目录中启动

参数说明:

  • -Recurse
    搜索当前目录和所有子目录
  • -File
    仅返回文件(而不是目录)
  • 获取内容$\FullName
    获取每个文件的内容
  • -match
    执行正则表达式比较

    • 有正则表达式,然后有正则表达式。看起来findstr不是很强大

      findstr /R "b............m@e......\.com" *.*
      
      这仅在findstr部件上不起作用。

      请采取适当的预防措施,例如在仅包含可读文件的目录中执行此操作。

      否,它在文件中!很抱歉,我没有指出这一点,因为我认为这是显而易见的。所以电子邮件地址很可能在e.txt文件中,但只是为了确保我想查找所有文件对不起,我忘了这是
      findstr
      的内容,所以应该很明显!我已经修改了我的答案,在文件内容中搜索。我已经尝试了你的解决方案,它的工作原理就是当我搜索根硬盘时,我的CPU消耗了95%,而且powershell也消耗了大量内存-在不到15分钟的时间内开始构建1.5 Gb,因此您能告诉我如何只搜索*.txt文件吗?
      Get childitem*.txt-recurse
      谢谢-它现在正在运行,CPU为@100%,内存也是如此。有什么方法可以降低它的使用率吗?从c:\运行它会抛出FINDSTR:Cannot open hiberfil.sys FINDSTR:Cannot open pagefile.sys FINDSTR:Cannot open swapfile.sys然后停止,所以我猜它不会在所有子目录中找到。
      findstr /R "b............m@e......\.com" *.*