2014年3月21日金曜日

[Windows]コマンドプロンプトでlocate のようなファイル検索を実現する方法(その2)

 以前、「[Windows]コマンドプロンプトでlocate のようなファイル検索を実現する方法(その1)」で WinLocate なるものがあると書きましたが、動いているみたいなので試してみました。

◆セットアップ

  1. ダウンロードサイトより、WinLocate をダウンロードします。
    http://sourceforge.net/projects/winlocate/
  2. zip ファイルをダウンロードしたら、ファイルを解凍します。
  3. Install.ini ファイルを編集して、"InsDir="にWinLocate をインストールするパスを入力します。
    たとえば、WinLocate を"C\:Tools\Win32Locate" にインストールした場合、"InsDir=C:\Tools" と入力します。
  4. ※UAC(ユーザーアカウント制御)の関係で、Windows Vista 以降の環境にインストールする場合は、Program Files 下にインストールすると管理者権限での実行が必要になるため他のディレクトリにインストールしました。 


  5. Install.bat をクリックして実行します。
    ※途中でエラーメッセージのダイアログボックスが表示されますが無視してください。(大丈夫か?)
  6. コンピューターのプロパティを表示して、「システムの詳細設定」を開きます。
  7. システムプロパティが表示されるので、「詳細設定」タブをクリックし、「環境変数」をクリックします。
  8. システムの環境変数の一覧から、「Path」の行を選択して、「編集」をクリックします。
  9. 変数値の最後に、半角のセミコロン(;)とWinLocate をインストールしたパスを入力します。
    たとえば、WinLocate を"C:\Tools\Win32Locate" にインストールした場合
    ;C:\Tools\Win32Locate

◆インデックス作成と検索


 WinLocateには、インデックスファイル作成と検索の2つのコマンドがあります。

  1. updatedb
    検索用インデックスファイルを作成するコマンドです。
  2. locate
    探しているファイルを検索するコマンドです。
※検索を実行するために、インデックスファイルを必ず作成してください。

◆updatedb を実行してみる

updatedb c:

 これを実行するとCドライブのインデックスファイルを作成してくれます。コマンドの処理は、予想以上に時間がかかりました。452GBで8分程。(これでも高速なのかも知れませんが…)

 Linux の場合、cron に設定してスケジューリングして、定期的にインデックスファイルの更新をすると思います。Windows では、タスクスケジューラーに登録するすと同じことができます。このコマンドのオプションに自動登録のオプションがあったのでそれを実行しました。

updatedb -s 2 00:00 "c:"

 これを実行する、2日おきの深夜0時にCドライブのインデックスファイルを自動作成してくれます。夜中なので時間を気にする必要もありません。なかなか良い感じ。

 「管理ツール」→「タスク スケジューラー」で更新タスクが実行されることが確認できます。

 そのほか、追加更新分のインデックス作成オプションなどがあるみたいです。自分は、これで十分なので試していません。詳しくはヘルプを表示してください。

updatedb -h

◆locate を実行してみる

locate "検索文字列"

 たとえば、Excelの調子が悪いので、"Excel.xlb"ファイルを探しているときは

locate Excel.xlb

 そのほか、ワイルドカード検索(*や&)ももちろんできます。

locate Excel.*

 残りのオプションについてはヘルプを表示してください。

locate -h

◆感想

 Linuxのターミナルみたいに、探しているファイルをサクサクと検索できますね。^^

0 件のコメント:

コメントを投稿