January
21st,
2008
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 }
}