WindowsでLinuxのfind-grepのようなファイル内サーチをしたい?それ、PowerShellでできるよ。

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)でファイル内を検索します。

興味があればこんなのもあります。