Linux FAQ: Can you share some examples of how to use the Linux locate command?
locate command is used to find files by their filename. The
locate command is lightning fast because there is a background process that runs on your system that continuously finds new files and stores them in a database. When you use the
locate command, it then searches that database for the filename instead of searching your filesystem while you wait (which is what the
find command does).
To find files on Unix and Linux systems, I've historically fired up my old friend, the Linux find command. For instance, to find a file named
tomcat.sh, I used to type something like this:
find / -name tomcat.sh -type f
This is a lot of typing, and although the results are current, it takes a long time to run on a big system. Recently a friend told me about the Linux
locate command, and I haven't looked back since.
Using the locate command
Using the command is easy; just type
locate followed by the name of the file you're looking for, like this:
Or, add the
-i option to perform a case-insensitive search, like this:
locate -i springframework
Your Linux system will very quickly tell you all of the places it has been able to find (locate) the file with the name you specified. I emphasize the "very quickly" part, because this is so much faster than using the Linux find command you'll never look back easier.
Another thing to note: if you type in a name like
foo (or any other name)
locate, by default, returns the name of any file on the system that contains the string "foo", whether. So whether the filename is foo, or foobar, or barfoo,
locate will return all of these as matches.
How the Linux locate command works
locate command works so fast because it runs a background process to cache the location of files in your filesystem. Then, when you want to find the file you're looking for, you can just use the command like I showed previously. It's that easy. Here's a quick blurb from the
locate man page:
The locate program may fail to list some files that are present, or may list files that have been removed from the system. This is because locate only reports files that are present in the database, which is typically only regenerated once a week by the /etc/periodic/weekly/310.locate script. Use find(1) to locate files that are of a more transitory nature. The locate database is typically built by user "nobody" and the locate.updatedb(8) utility skips directories which are not read-able for user "nobody", group "nobody", or world. For example, if your HOME directory is not world-readable, none of your files are in the database.
So, as the man page states, if you can't find a file using the locate command, it may be that the database is out of date, and when this happens, you can always use the
find command. The
find command will be slower because it scans all the files you specify in real time (it doesn't have a database backing it up), but you can also perform more powerful searches with it. For more information on the Linux locate command, please see the Linux locate command man page.