Previously I blogged about a recursive select-string function. Recently I’ve extended it a bit. I found the function to be very useful but when I encountered problems searching large directories that contained binary files. Namely searching them usually returned a result of sorts and printing out the contents of a binary file caused my console to beep in a rather annoying fashion. To fix this I added a new parameter that will perform a slightly smarter search by filtering out binary files.

function Select-StringRecurse()  
{  
    param ( [string]$text = $(throw "Need text to search for"),  
            [string[]]$include = "*",  
            [switch]$smart = $false) 

    $smartRegex = "^\\.(lib|exe|obj|bin|tlb|pdb)$"  
    gci -re -in $include |   
        ? { -not $_.PSIsContainer } |   
        ? { (-not ($smart)) -or (-not ($_.Extension -match $smartRegex)) } |  
        % { write-debug "Considering: $($_.FullName)"; ss $text $_.FullName }  
}  

Share Post

Google+

comments powered by Disqus