Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

'grep' in PowerShell 1.0

I want to find files containing the word "navbar" anywhere in files. I can do this using Mac's grep command like this:

grep -R "navbar" *

What's its equivalent in PowerShell 1.0?

like image 646
coure2011 Avatar asked Jun 20 '12 05:06

coure2011


1 Answers

findstr /s "navbar" *

It's a native command but should work well enough.

PowerShell 1.0 itself is a little tricky, as Select-String (the direct equivalent) only exists since 2.0, I think. So you'd have to make do with something like:

Get-ChildItem -Recurse |
  ForEach-Object {
    $file = $_
    ($_ | Get-Content) -cmatch 'navbar' |
      ForEach-Object { $file.Name + ':' + $_ }
  }

Short version:

ls -r|%{$f=$_;($_|gc)-cmatch'navbar'|%{$f.Name+":$_"}}

This is quite literally:

  1. Find all files recursively (the -R part).
  2. Read each file and print matching lines with their file name.
like image 95
Joey Avatar answered Oct 16 '22 15:10

Joey