As you might be aware of there is an entire world below the pretty window manager in Mac OS X. It has many names, I usually refer to it as the console.
However, finding and managing files in it can be a hassle unless you are aware of a large variety of commands. This guide will describe the ‘locate’ command.
The manual sais ‘locate — find filenames quickly’ and ‘The locate program searches a database for all pathnames which match the specified pattern.’ which is very true.
Basically locate searches a locally stored database.
Default in Mac OS X the locate database isn’t generated, and there is no need to unless you are a console user. To enable this you have to open a console and type
$ sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
This commands automates the locate database a bit. If we look at the file (/System/Library/LaunchDaemons/com.apple.locate.plist) we can see the following data
<key>Hour</key> <integer>3</integer> <key>Minute</key> <integer>15</integer> <key>Weekday</key> <integer>6</integer>
This means the indexing should appear 3:15 every Saturday. I suppose it’s a normal and quite good time to index the database, but being able to update it manually is a very good option sometimes as well too. To do this simply run
$ sudo /usr/libexec/locate.updatedb # To simplify this you can create an alias, type $ sudo ln -s /usr/libexec/locate.updatedb /usr/bin/updatedb # Now you can simply type $ sudo updatedb
Using the database
This is very simple, just type
$ locate <searchterm> # Example $ locate apachectl # Will return something like this /Library/WebServer/share/httpd/manual/programs/apachectl.html /Library/WebServer/share/httpd/manual/programs/apachectl.html.en /Library/WebServer/share/httpd/manual/programs/apachectl.html.ko.euc-kr /Library/WebServer/share/httpd/manual/programs/apachectl.html.tr.utf8 /usr/sbin/apachectl /usr/share/man/man8/apachectl.8.gz /usr/share/zsh/4.3.9/functions/_apachectl