findやgrepで検索したファイルをGUIテキストエディタで開く
一般的なGUIテキストエディタには、GREP検索機能が付いていて、検索結果から対象ファイルにジャンプすることができる(タグジャンプ)。しかし、このGREP機能で指定できる検索条件では、指定できる条件に不満がある。
そこで、findまたはfind+grepなどで検索した結果からファイルを開くスクリプトを書いてみた。
まず、任意のテキストエディタを開くコマンド("text"という名前にしておく)を用意する。以下のように実行できるようにする。
text file [line-number]
次に、find+grepの結果と上のコマンドに渡すスクリプトを書く("jump"という名前にしておく)。これはちょっと複雑な処理なので、Perlで書いた。上限を3としているが、これは検索結果のうち"text"に渡すものを最大3件に限定するため("head -n 3"と同じ効果)。
use strict; my $limit = 3; for (<>) { s/[\r\n]//g; my $path; my $number; if (/^((?:[A-Za-z]:)?[^:]+):(\d+):.+$/) { $path = $1; $number = $2; } else { $path = $_; $number = 1; } next if !-f $path; system "text", $path, $number; last if --$limit <= 0; } exit;
これを、以下のように使う(shellスクリプト内でgrepを使っている箇所を検索)。
$ find . -name "*.sh" | xargs grep -n grep | jump