将文件中的关键字(模式)与多个文件进行匹配

时间:2017-08-09 13:07:42

标签: regex powershell select-string

对于这个晦涩的标题,我很抱歉,这是我的问题以及我想做的事情。

我的档案:

\\mydir\keywords.txt
\\mydir\textfile1.txt
\\mydir\textfile2.txt
\\mydir\textfile3.txt
etc

我的“keywords.txt”包含许多我希望与“textfile1.txt”匹配的关键字(字符串)等等,并接收包含匹配项的文件名的答案。

$keywords = Get-Content -Path '\\mydir\keywords.txt' | Out-String
Select-String -Path '\\mydir\*.txt' -Pattern $keywords

即。以递归方式搜索\ mydir \中.txt的所有文件,并使用文件“keywords.txt”的内容作为搜索关键字。

Get-Content默认情况下将值作为数组返回,Out-String应将这些值转换为字符串。

非常感谢所有帮助!

1 个答案:

答案 0 :(得分:3)

从代码中删除| Out-String部分,它会按照您的意图运行。这是因为Get-Content将在$Keywords中创建一个字符串数组,-Pattern参数接受字符串数组输入:

您还应该使用-SimpleMatch,除非您希望将关键字解释为RegEx模式。

Select-String -Path '\\mydir\*.txt' -Pattern (Get-Content -Path '\\mydir\keywords.txt') -SimpleMatch