Find files.
Syntax locate pattern
locate searches a database for all pathnames which match the specified pattern.
The database is recomputed periodically, (about once a week) and contains the path-names of all files which are publicly accessible.
Shell globbing and quoting characters (*, ?, \, [ and ]) can be used in pattern, although they will have to be escaped from the shell.
Preceding any character with a backslash (\) eliminates any special meaning which it can have. The matching differs in that no characters must be matched explicitly, including slashes (/).
As a special case, a pattern containing no globbing characters ('foo') is matched as though it were '*foo*'..
To force a build/update of the database:
$ cd /
$ sudo /usr/libexec/locate.updatedb
The update can alternatively be called via a plist which executes /usr/libexec/locate.updatedb
$ sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
Database
/var/db/locate.database
Script to update database
/usr/libexec/locate.updatedb
On modern hardware it is often faster to use mdfind, or to create and search an uncompressed index file of all filenames than to use the compressed locate database, source: Julia Evans [x]
sudo find / > database.txt
grep Alanis database.txt
Examples
Search the database for files with names containing "foo",
or in folders with names containing "foo"
$ locate foo
Search the database for files (but not in folders) with names ending in ".jpg"
$ locate '*.jpg'
[I do not] carry such information in my mind since it is readily available in books. ...The value of a college education is not the learning of many facts but the training of the mind to think ~ Albert Einstein
find - Search for files that meet a desired criteria.
grep - Search file(s) for lines that match a given pattern.
ln - Make links between files (hard links, symbolic links).
ls - List information about file(s).
mdfind - Spotlight search.
whereis - Locate a command.
which - Locate a program file in the user's path.