Everythingを使った関数を書いてみた
everythingのコマンドラインツールes.exeを利用してファイル検索する関数を書いてみた。
function Everything { param([string]$word, [string]$dir=$(pwd)) start cmd.exe -Verb runas -ArgumentList "/c es.exe", $word, $dir, " | clip" sleep -m 500 # 適宜調整 get-clipboard # http://winscript.jp/powershell/229 を拝借。ありがとうございます。 } sal evg Everything
補助関数として次のものも利用。
function Get-SpecificLocation { switch ($args[0]) { { 'visualstudio', 'vs' -contains $_ } { switch ($args[1]) { $null { return 'C:\doc\Visual Studio 2013'; break; } # 省略 } } # 省略 } } sal gsl Get-SpecificLocation
使い方。
> evg 検索文字列 (gsl vs) 検索結果が フルパス文字列の配列として ここに表示される > evg 検索文字列 (gsl vs) | なにか処理
Everything関数のGet-ChildItemに比べたメリット
・gci -Recurseより速い(Everythingの検索が速いのに加え、フルパスしか情報を取得・出力しないため?)
・パスが手っ取り早くほしいときに、 | % FullName | をはさむ手間がいらない
・検索文字列を "word1 word2" の形にしてAND検索が書ける
・検索文字列を -r hoge の形にして正規表現が使える
・他にもEverythingの検索構文が使える
2014/5/8 17:28追記
param([ValidateSet("vs", "visualstudio", ... )]$category) として引数を補完させるほうが便利かも。