ファイルを探す
〜locateの検証〜
0.改訂履歴
- 2002.08.29 新規作成
1.はじめに
このドキュメントでは,ディスク上からファイルを探す方法を説明する.
UNIXでファイルを探す場合は,findコマンドが有名だが,より高速に検索するlocateコマンドを試してみる.
なお,使用しているOSは,MacOS Xだが,Linuxの大半のディストリビューションでも実装している.
2.locateとは
- 多くのLinuxとMacOS Xには,locateというコマンドが用意されている.
- locateは,locate.databaseというデータベースによって,ファイルの場所が管理されている.
- 定期的にlocate.updatedbスクリプトを実行してデータを更新する必要がある.
- ほとんどのLinuxディストリビューションでは,自動更新が設定されている.
3.使い方
- locateの使い方は,次の通りである.
locate ファイル名
|
- ファイル名をしたい下だけで,ワイルドカードになっている.
- locateというファイルを探してみる.
[help-mob:~] shinnai% locate locate /private/var/db/locate.database /private/var/tmp/locate.list.634 /usr/bin/locate /usr/libexec/locate.bigram /usr/libexec/locate.code /usr/libexec/locate.updatedb /usr/share/emacs/20.7/lisp/locate.el /usr/share/emacs/20.7/lisp/locate.elc /usr/share/man/man1/locate.1 /usr/share/man/man8/locate.updatedb.8 [help-mob:~] shinnai% |
4.時間を計って他のツールと比べてみる
- timeコマンドを使って,実行時間を調べてみる.
- 最初に,NetEscape.jpgというファイルを探してみる.
[help-mob:~] shinnai% time locate NetEscape.jpg /Users/shinnai/Sites/TeamNeJp/image/NetEscape.jpg 0.070u 0.020s 0:00.12 75.0% 0+0k 0+0io 0pf+0w [help-mob:~] shinnai% |
- 0.12秒かかっている.
- 次に,findコマンドを使ってみる.
- なお,時間がかかりすぎるので,ユーザディレクトリだけに絞っている.
[help-mob:~] shinnai% time find /users/shinnai -name NetEscape.jpg -print /users/shinnai/Sites/TeamNeJp/image/NetEscape.jpg 0.060u 0.430s 0:06.06 8.0% 0+0k 1626+450io 0pf+0w [help-mob:~] shinnai% |
- 6秒かかっている.
- 経過時間よりも,システムリソースをたくさん使っている事が分かる.
- これによって,単純にファイルを探すだけなら,locateを使った方がよいと結論がでた.