FreeStyleWikiの調査用に作成したシェルスクリプト

基本的に難解なコマンドなんて書きません(=知りません)。
やりたいようにできればOKです。

findall - すべてのソースファイルを見つける

#!/bin/bash
find . -name '*.pl'
find . -name '*.pm'
find . -name '*.cgi'

allgrep - 全てのソースファイルに対してgrepをする

#!/bin/bash

./findall | xargs grep $1

シェルスクリプトの使用例

「data_dir」という項目の出現ソースを調べるために、すべてのソースファイルに対し「data_dir」をgrepする。

$ ./allgrep data_dir
./lib/Wiki.pm:# my $data_dir = $wiki->config('data_dir');
./lib/Wiki.pm:# # 設定を$data_dirで上書き
./lib/Wiki.pm:# $wiki->config('data_dir',$data_dir);
./lib/Wiki.pm:                  mkpath($self->config('data_dir'  )."/$child") or die $!;
./lib/Wiki.pm:                          my $template = $self->config('data_dir')."/template";
./lib/Wiki.pm:                                                  copy($template."/$entry",$self->config('data_dir')."/$child/$entry");
./lib/Wiki.pm:  rmtree($self->config('data_dir'  ).$path) or die $!;
./lib/Wiki.pm:                  and -d $self->config('data_dir')."/$child");
./lib/Wiki/DefaultStorage.pm:   my $dir = $self->{wiki}->config('data_dir');
./lib/Wiki/DefaultStorage.pm:   my $wikifile = &Util::make_filename($wiki->config('data_dir'),&Util::url_encode($page),"wiki");
./lib/Wiki/DefaultStorage.pm:           opendir(DIR, $wiki->config('data_dir')) or die $!;
./lib/Wiki/DefaultStorage.pm:   my @status = stat(&Util::make_filename($self->{wiki}->config('data_dir'),&Util::url_encode($page),"wiki"));
./lib/Wiki/DefaultStorage.pm:   my $dir = $self->{wiki}->config('data_dir');
./wiki.cgi:             unless($path_info =~ m<^(/[A-Za-z0-9]+)*/?$> and -d $wiki->config('data_dir').$path_info){
./wiki.cgi:             $wiki->config('data_dir'   , $wiki->config('data_dir'  ).$path_info);

実行結果の左側はソース名、右側は「data_dir」を含む行の内容です。
後は、各ソースの中身を一つ一つ調べていくだけの簡単なお仕事です。