Welcome to the navigation

Ullamco incididunt ex ad dolor enim ut non id in amet, officia tempor culpa cillum exercitation duis commodo sint reprehenderit eu esse voluptate laboris eiusmod. Labore consequat, id dolore ea exercitation nostrud nisi duis proident, mollit ut qui pariatur, lorem et laborum, fugiat commodo eu ex ad do in in

Yeah, this will be replaced... But please enjoy the search!

Using locate in Mac OS X

Categories Tags
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.

Locate

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
Fancy huh :)