在 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 部分不起作用。
采取适当的预防措施,例如在只包含可读文件的目录中。
我正在尝试在我的硬盘上搜索电子邮件地址。我知道它应该是这样的:
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 部分不起作用。
采取适当的预防措施,例如在只包含可读文件的目录中。