2017-04-24 162 views
1

我正試圖搜索我的硬盤上的電子郵件地址。我知道,它應該是這樣的:使用Windows上的正則表達式在當前驅動器中的所有文件中搜索字符串

b************[email protected]******.com

,這就是爲什麼我想出了這個正則表達式:

b.{12}[email protected]{6}.com

我發現findstr可能對這項工作非常有用,並試圖:

findstr /R b.{12}[email protected]{6}\.com c:\*.* 

,但沒有找到,即使我添加了電子郵件中的文件,該文件應匹配我的正則表達式是什麼,這一個例子:[email protected]

回答

0

你可以嘗試用下面的PowerShell命令,而不是做這個(取決於你開始這可能需要很長的時間來運行注):

Get-ChildItem *.txt -Recurse -File | Where-Object { (Get-Content $_.FullName) -match "b.{12}[email protected]{6}.com" } 

您將獲得紅色的錯誤消息,您沒有權限訪問的磁盤區域。以管理員身份運行PowerShell以實現儘可能廣泛的搜索。

添加文件路徑傳遞給Get-ChildItem爲了設置一個基本目錄,如果你願意,否則會在目錄開始,你目前在

參數說明:

  • -Recurse搜索當前目錄和所有子目錄。
  • -File只返回文件(不是目錄)。
  • Get-Content $_.FullName獲取每個文件的內容。
  • -match執行正則表達式比較。
+0

不,它在文件中!我很抱歉,我沒有指出這一點,因爲我認爲這很明顯。因此,這個電子郵件地址更可能在e .txt文件中,但只是爲了確保我想查找所有文件 – asknomore

+0

對不起,我忘記了'findstr',所以它應該是顯而易見的!我已經修改了我的答案,其中一個將搜索文件的內容。 –

+0

我試過你的解決方案,它的工作原理就是當我搜索根硬盤時,我的CPU達到95%,它也是PowerShell消耗大量內存 - 在不到15分鐘的時間內開始建立1.5 Gb,那麼請你告訴我如何只搜索* .txt文件? – asknomore

0

有正則表達式,然後有正則表達式。看起來像findstr不是很強大。

findstr /R "[email protected]\.com" *.* 

這只是在FINESTR部分不工作。
請採取適當的預防措施在只包含可讀文件的目錄中。

+0

從c:\運行它會拋出FINDSTR:無法打開hiberfil.sys FINDSTR:無法打開pagefile.sys FINDSTR:無法打開swapfile.sys,然後停止,所以我想它不會在所有子目錄中找到。 – asknomore

+0

@asknomore真的,謝謝你的提示。 – Yunnosch

相關問題