find の代わりに locate を使おう

超高速なファイル検索コマンド "locate" がある.
これは

$ find / -name '*a*' -print

と同じ働きをする.findを上記のように使ったことがある人ならわかると思うけど,ものすっごい時間がかかる.
しかし locate だと一瞬.誇張なしで一瞬で終わる.
同じことをしているはずなのに,この差は何?って思うかもしれない.
そのからくりは,あらかじめファイルシステム中の全ファイルをデータベースに記録しておき、そのデータベースを検索しているから.
なので,実際にディレクトリ・ファイルをルートから探しているわけではない.
当然,それがデメリットにもなり,データベースが更新された場合はすぐには反映されない.そのデータベースは,Ubuntu の場合1日に1回更新されるようだ.手動で更新するには

$ sudo updatedb

とする.

使い方

よく使うのは Apacheの設定ファイルの「httpd.conf」を探すときとか.サーバーとかバージョンによって場所が違うから非常に面倒.しかし locate なら一瞬で終わるからストレスにならない.

$ locate httpd.conf

で良い.


ぜひ find / -name '*a*' -print の代わりに locate a を使おう.