WindowsでLinuxのfind-grepのようなファイル内サーチをしたい?それ、PowerShellでできるよ。
2019, Nov 12
アジェンダ
WSL使えばよくね?って思いますが、PowerShellの話にフォーカスします。
UNIX/LINUXコマンドで
grep "(hoge)" -rl (path)
こんなに簡単!
Windows PowerShellで(本題)
ls -r -include (pattern)
# find . -type f -name (pattern)
Select-String '(hoge)'
# xargs grep (hoge)
これをパイプでくっつけて使います。
補足
- 【findコマンドのgrep】今回はわかりやすく-nameとしましたが、
| grep (hoge)
でも同じことができます。ただし、xargsの有無で意味が異なります。 - 【findコマンドに
-print
オプション】これはフルパス表記に変えるものなので、本件で不要な事をやっている例がちょいちょいあるのが気になって仕方ない… - 【grepにxargsを指定する・しない場合の違い】
| grep (hoge)
でファイルパスを、| xargs grep (hoge)
でファイル内を検索します。
興味があればこんなのもあります。
恐怖!シェルショッカーの POSIX原理主義シェルスクリプト from Richie Shellshoccar </div>
ご参考まで。