我想查找給出字符串的文件。我正在使用下面的行如何獲取具有多個必需字符串的文件
Get-ChildItem -recurse | Select-String -pattern "Magnet","Stew" | group path | select name
但它是給文件有任何一個單詞「磁鐵」,「燉」。但是我想要兩個詞都有的文件。從邏輯上說,上述命令將其解釋爲「或」條件。我想要「和」條件。任何人都可以指導我如何做到這一點?
我想查找給出字符串的文件。我正在使用下面的行如何獲取具有多個必需字符串的文件
Get-ChildItem -recurse | Select-String -pattern "Magnet","Stew" | group path | select name
但它是給文件有任何一個單詞「磁鐵」,「燉」。但是我想要兩個詞都有的文件。從邏輯上說,上述命令將其解釋爲「或」條件。我想要「和」條件。任何人都可以指導我如何做到這一點?
嘗試此您正則表達式:
'.*(?:stew.*magnet)|(?:magnet.*stew).*'
編輯:
如果你正在尋找的文件的任何地方這些比賽:
Get-ChildItem -Recurse |
where {(
($_ | Select-String -Pattern 'Stew' -SimpleMatch -Quiet) -and
($_ | Select-String -Pattern 'Magnet' -SimpleMatch -Quiet)
)}
張貼在鏈接CB解決方案提供的將會起作用,但是對於你需要做的事情來說效率並不高。 -SimpleMatch
將比使用Regex模式更快,並且-Quiet
開關將使其返回True或False,具體取決於它是否在文件中找到匹配項。如果其中一個或另一個條款出現在文件中的可能性較小,請更改該順序,以便在測試堆棧中首先出現一個,以便測試將盡快失敗,並且可以移至下一個文件。
我認爲如果這兩個詞在不同的行中可能是一個問題。 –
你說得對。如果它在文件中的任何地方,那麼如果你想在一次讀取操作中完成,select-string將不太適合解決方案。 – mjolinor
也許可以使用'[system.io.file] :: ReadAllText()'完成,它總是返回一個字符串類型。 –
可能的重複[如何使用PowerShell選擇字符串來查找文件中的多個模式?](http://stackoverflow.com/questions/3920383/how-to-use-powershell-select-string-找到多於一個模式的文件) –