2017-08-09 62 views
2

对不起,我的问题和我想要做的事情。将文件中的关键字(模式)与多个文件进行匹配

我的文件:

\\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 

I.e.通过\ mydir \中所有.txt文件递归搜索,并使用文件“keywords.txt”的内容作为关键字进行搜索。

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

希望所有帮助!

+0

你想他们作为一个数组,我想,因为'-Pattern'接受数组输入。放下'Out-String'部分。 –

回答

3

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

您还应该使用-SimpleMatch,除非你想让你的关键词被解释为正则表达式模式。

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

感谢您的帮助,您的答案和@MarkWragg给了我我想要的,我实际上忽略了,因为这两个答案也转储整个数组,因为它使用“keywords.txt”找到匹配,并且还搜索所有txt文件*。文本)。 我删除了keywords.txt并把它另一个文件夹,它的工作:d 所以我实际的代码为: '$内容=获取内容“\\ mydir1 \ keywords.txt” 选择字符串-Path“ \\ mydir2 \ *。txt'-pattern $ content' – TheSwede86

相关问题