Powershell - 查找与模式匹配特定次数的文件

时间:2015-04-08 19:44:21

标签: powershell

要在powershell中的一组文件中查找简单模式,我去

$pattern= 'mypattern'
$r= Get-ChildItem -Path "C:\.." -recurse | 
    Select-String -pattern $pattern | group path | select name
    $r | Out-GridView

在我的场景中,我有多次包含模式的文件和其他只有一次模式的文件。因此,我对那些包含该模式的文件感兴趣不止一次而对其余部分不感兴趣。感谢

1 个答案:

答案 0 :(得分:1)

开始您所寻找的一种方法是Select-StringGroup-Object,就像您已经拥有的一样。

Select-String -Path (Get-ChildItem C:\temp\ -Filter *.txt -Recurse) -Pattern "140" -AllMatches | 
    Group-Object Path | 
    Where-Object{$_.Count -gt 1} | 
    Select Name, Count |
    Out-GridView

这将获取临时目录中的所有txt文件,并按匹配数对它们进行分组。 -AllMatches很重要,因为默认情况下Select-String只会返回它在一行上找到的第一个匹配项。

在这些群组中,我们采用Where-Object计数高于1的群组。然后我们只输出文件名,并用Select Name,Count计算。其中name是匹配文本所在的完整文件路径。

关于Out-GridView

我看到您正在分配从Out-GridView$r的输出。如果您想这样做,您需要确保添加-PassThru参数。