ファイルを検索して開く

カレントディレクトリから特定のファイルを検索して、見つかったファイルをエディタで開くコマンドが欲しかったので、作ってみた。

###############################################################################
# 関数名:
#       Find-OpenFile (findop)
# 説明:
#       指定したパターンに合致するファイルをエディタで開きます。
# 引数;
#       $pattern    :   ファイル名のパターン(ワイルドカード指定可能)
#       $exe        :   ファイルを開くエディタ
#       $recurse    :   サブディレクトリも対象にするか
###############################################################################
function Find-OpenFile([string]$pattern, [string]$exe="Hidemaru.exe", [switch]$recurse) {
    if($pattern.Length -eq 0) {
        Write-Error "開くファイルのパターンを指定してください" -category InvalidArgument
    } else {
        Get-ChildItem -recurse:$recurse | where { $_.Name -like $pattern } | foreach {
            Invoke-Expression ("{0} {1}" -f $exe, $_.FullName)
        }
    }
}
Set-Alias findop Find-OpenFile

文字列で渡した実行可能ファイル名を「Invoke-Expression」で実行しているのがミソ。