Question:
I want to find files containing the word “navbar” anywhere in files. I can do this using Mac’s grep command like this:
1 2 |
grep -R "navbar" * |
What’s its equivalent in PowerShell 1.0?
Answer:
1 2 |
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:
1 2 3 4 5 6 7 |
Get-ChildItem -Recurse | ForEach-Object { $file = $_ ($_ | Get-Content) -cmatch 'navbar' | ForEach-Object { $file.Name + ':' + $_ } } |
Short version:
1 2 |
ls -r|%{$f=$_;($_|gc)-cmatch'navbar'|%{$f.Name+":$_"}} |
This is quite literally:
- Find all files recursively (the
-R
part). - Read each file and print matching lines with their file name.