Ubuntu Weekly Recipe

第24回デスクトップサーチ:ファイルの検索・Hyper Estraier・Google Desktop

同じマシンを使って日常的な作業を続けていくと、ホームディレクトリの中に多くのファイルが蓄積されていきます。また、⁠設定ファイル名は覚えているが、それがどのディレクトリに格納されているか分からない」といった問題に遭遇することもあるでしょう。このような場合、利用しているマシン内を適切に検索するのが一番です。今回はこうした、デスクトップ環境向けの検索アプリケーションに関するレシピをお届けします。

GNOMEの「ファイルの検索」機能

Ubuntuでは、GNOME標準の検索機能を利用することで、ファイル名での検索を行うことができます。⁠場所⁠⁠→⁠ファイルの検索]からアクセスするか、⁠ファイルの検索」というアプレットを追加し、パネルから起動するのが便利でしょう図1⁠。アプレットの追加方法は、第9回を参照してください。

図1 ファイルの検索アプレット
図1 ファイルの検索アプレット

アプレットの使い方は非常に単純で、⁠対象となる名前]欄に検索したいファイル名を入力し、⁠対象となるフォルダ]を選択して[検索]ボタンを押すだけです。図2では、ファイルシステム全体に対して、⁠resolv.conf」というファイル名を検索しています。

図2 ⁠resolv.conf」というファイルの検索
図2 「resolv.conf」というファイルの検

検索を行う場合、ファイル名だけでなく、ファイルの中身を考慮して検索したい場合があります。そのような場合は、⁠追加オプション」の指定を行うことで実現できます。図3では、⁠resolv.conf」というファイル名で、なおかつ、⁠nameserver」という文字列を含むファイルを検索しています。⁠図2)の結果と異なり、/usr/share/man/man5/resolv.conf.5.gzが検索結果に含まれていないことが分かるでしょう。

図3 ⁠nameserver」という文字列を含むファイルの検索
図3 「nameserver」という文字列を含むファイルの検

さらに、⁠適用する検索条件」を指定することで、より細かな検索を行うことができます。デスクトップ用途向けOSが標準で備える検索機能としてはごく標準的なものですが、Nautilus(ファイルマネージャ)組み込みの検索に比べると、かなり複雑な検索も行うことができます。

図4 その他の検索条件
図4 その他の検索条件

GNOMEの検索機能はfindコマンドのフロントエンドですので、これらの検索は内部ではfindコマンドを呼び出すことで実現されています。同じように手で入力することで、端末からも同じ結果を得ることができます。

たとえばファイル名だけの検索であれば、⁠端末]上で次のように操作することと同義です。

$ find / -iname *resolv.conf* -xdev -print
/etc/resolv.conf
/etc/ppp/resolv.conf
/usr/share/man/man5/resolv.conf.5.gz
/usr/share/ubuntu-docs/ubuntu/sample/resolv.conf

また、⁠nameserver」という文字列を含む検索は次のようになります。

$ find / ( -iname *resolv.conf* -o -iname .*resolv.conf* ) ! -type p -exec grep -i -c nameserver {} ; -xdev -print
/etc/resolv.conf
/etc/ppp/resolv.conf
/usr/share/ubuntu-docs/ubuntu/sample/resolv.conf

もっとも、単に「resolv.conf」という名前のファイルを探したいのであれば、次のようにlocateコマンドを使った方が便利で高速です。

$ locate resolv.conf
/etc/resolv.conf
/etc/ppp/resolv.conf
/usr/share/man/man5/resolv.conf.5.gz
/usr/share/ubuntu-docs/ubuntu/sample/resolv.conf

また、⁠nameserver」の文字列を含むファイルを得たいのであれば、egrep -lとlocateコマンドを組み合わせれば、findを使うよりも小さなコストで同じようなことができるでしょう[1]⁠。

$ egrep -l nameserver `locate resolv.conf`
/etc/resolv.conf
/etc/ppp/resolv.conf
/usr/share/ubuntu-docs/ubuntu/sample/resolv.conf

Hyper Estraierを使う

UbuntuにはデフォルトでTrackerというデスクトップ検索エンジンが導入されていますが、日本語を認識して検索することができないため、日本語ドキュメントを主に扱う場合にはあまり使い勝手が良いものではありません。

コマンドラインから利用でき、日本語周りの問題が少ない(かつ、検索精度が高い)選択として、Hyper Estraierを利用する方法があります。

パッケージ名は「hyperestraier」ですので、aptやSynapticなどを用いてインストールしてください。aptを用いたインストールは次のように行います。

$ sudo apt-get install hyperestraier

インデックスの作成

Hyper Estraierの利用には、最初にインデックスを作成する必要があります。次のように、/home以下に専用のディレクトリを作ってしまうのが便利でしょう。最初にインデックス格納領域を作成して、必要なドキュメントの情報をインデックスに格納します[2]⁠。インデックス作成コマンドを覚えるのは面倒ですので、シェルスクリプトを作成し、それを呼び出すようにすると便利でしょう。

まず、シェルスクリプトを格納するディレクトリを作成します。 

$ mkdir ~/bin
$ gedit ~/bin/estgather.sh

次のコードをegdit上にコピー&ペーストし、保存します。

#!/bin/bash

for i in `/bin/ls -d ~/* /usr/share/doc*/ /usr/local/doc*/ /opt/*/doc/`
    do
        /usr/bin/nice -n 19 estcmd gather -cl -il ja -sd -cm ~/.est/casket "${i}" 
    done;

exit 0

インデックス(casket)の保存ディレクトリを作成し、先ほど準備したシェルスクリプトに実行権限を与え、インデックス作成を行います。ディレクトリ以外が対象の直下に存在した場合などにエラーが返りますが、無視してください(あるいは検索指定をより細かく行ってください⁠⁠。

$ mkdir .est/
$ chmod +x ~/bin/estgather.sh
$ ~/bin/estgather.sh

インデックスを作成したら、以下のコマンドで検索が可能になります。以下は「pygtk」を検索した例です。

$ estcmd search -nl -vh -max 2 ~/.est/casket pygtk
--------[0ED68D6F50F57080]--------
VERSION	1.0
NODE	local
HIT	1
HINT#1	pygtk	1
TIME	0.000383
DOCNUM	2419
WORDNUM	75566
VIEW	HUMAN

--------[0ED68D6F50F57080]--------

URI: file:///usr/share/doc/python/faq/gui.html
Title: Graphic User Interface FAQ

Graphic User Interface FAQ Date: 2003-09-04 Version: 6607 Web site: http://www.python.org/ Conte ... uting and a Qt license from Trolltech . 1.1.4 GTk+ PyGTk bindings for the GTk+ toolkit have been implemente ... 


--------[0ED68D6F50F57080]--------:END

このままでは検索コマンドを覚えるのが大変ですので、次のようなエイリアスを.bashrcなどに記述するのが良いでしょう[3]⁠。

alias est_search="estcmd search -nl -vh -max 2 ~/.est/casket"

エイリアスを登録したら、次のように利用することができます。

$ est_search 日本語 Ubuntu

また、登録したインデックスは古くなりますので、定期的にインデックスを更新する必要があります。⁠VISUAL=gedit crontab -e 」で、次のような更新指定を登録しておくのが便利です。もちろんviやnanoに慣れている方はcrontab -eで問題ありません。

# m h  dom mon dow   command
00	*/12	*	*	*	~/bin/estgather.sh > /dev/null 2>&1

Google Desktopの利用

代表的なデスクトップサーチアプリケーションの一つであるGoogle DesktopをUbuntuで利用することもできます。http://desktop.google.com/ja/linux/にアクセスし、Debian/Ubuntu用のパッケージをダウンロードしてください図5⁠。

図5 Google Desktopのダウンロード
図5 Google Desktopのダウンロード

ダウンロードしたファイルをダブルクリックすればダイアログが開きますので、⁠パッケージのインストール]ボタンを押下することでインストールできます図6⁠。インストール後は[アプリケーション⁠⁠→⁠Google デスクトップ⁠⁠→⁠Google デスクトップの設定]で初期設定を行ってください。

図6 GDebiによるインストール
図6 GDebiによるインストール

[アプリケーション⁠⁠→⁠Google デスクトップ]とたどり、通知領域にあるアイコンから操作を行います。Googleの通常の検索と同じ形で検索を行うことが可能です。一般的なデスクトップ用途であれば便利に利用できるでしょう。

おすすめ記事

記事・ニュース一覧