如何获取具有多个必需字符串的文件

时间:2014-03-19 11:34:45

标签: powershell

我正在尝试查找已经给出字符串的文件。我正在使用以下行

 Get-ChildItem -recurse | Select-String -pattern "Magnet","Stew" | group path | select name

但它提供的文件中包含任何一个单词" Magnet"," Stew"。但我想要有两个单词的文件。从逻辑上讲,上面的命令将其解释为"或"条件。我想"和"条件。任何人都可以指导我如何做到这一点吗?

1 个答案:

答案 0 :(得分:0)

试试这个正则表达式:

'.*(?:stew.*magnet)|(?:magnet.*stew).*'

编辑:

如果您正在文件中的任何位置查找这些匹配项:

Get-ChildItem -Recurse |
 where {(
          ($_ | Select-String -Pattern 'Stew' -SimpleMatch -Quiet) -and
          ($_ | Select-String -Pattern 'Magnet' -SimpleMatch -Quiet)
         )}

在提供的链接CB上发布的解决方案将起作用,但对于您需要做的事情似乎并不是非常有效。 -SimpleMatch将比使用正则表达式模式更快,-Quiet开关将使其返回True或False,具体取决于它是否在文件中找到匹配项。如果一个或另一个术语不太可能出现在文件中,请更改顺序,使其首先出现在测试堆栈中,这样测试将很快失败,并且可以继续下一个文件。