ファイル検索コマンド locate の出力をハイパーテキスト化する wlocate

locate コマンド

Linux でファイル名からファイルの所在を見付けるのに最も便利なのは locate コマンドです。locate コマンドを利用するためには、インデックスが作成されている必要があります。インデックス作成には updatedb コマンドが使われます。24時間稼働しているサーバーでは updatedb は自動的に深夜に実行されるようですが、デスクトップとしてLinux を使っている場合は root アカウントで時々 updatedb を起動する必要があります。大体、次のような手順になります。

$ su

Password: (root アカウントのパスワードを入力) 
# updatedb &
[1] 13912
# exit

$ locate .pm

上のように locate .pm と入力すると ディスクの中の Perl モジュールのリストを即座に表示してくれます。

locate の出力をハイパーリンクにする wlocate

locate コマンドだけでも、十分強力ですが、これを、wgrep のときと同じようにハイパーリンクにしようと思います。まず、locate の出力をHTML形式にするスクリプト locf.pl を作ります。

ファイル名:locf.pl

#!/usr/bin/perl

while (<>) {
	chop;
	print "<a href=\"$_\">$_</a><br>\n";
}

次に locate の出力をハイパーリンクにするスクリプト wlocate を作成します。

ファイル名:wlocate

#!/bin/sh
exec locate $@ | locf.pl | w3m -T text/html

locf.pl と wlocate のパーミッションを実行可能にします。

$ chmod +x locf.pl wlocate

準備が整ったところで、コンソールから wlocate を使ってみましょう。

$ wlocate .pm

lynx を利用 llocate

lynx を使った llocate も作れます。

ファイル名:llocate

#!/bin/sh
locate $@ | locf.pl > ~/.locf.html
exec lynx ~/.locf.html

追記:wlocate + grep ができます。

wlocate で出力されるリストが長過ぎて grep でフィルターしたいときがあります。そんなときは locf.pl を単体で使って下のようにすることができます。

$ locate php | grep manual.html | locf.pl | w3m -T text/html