locate command is a Unix utility used for quickly finding files and directories. The command is a more convenient and efficient alternative to the find command, which is more aggressive and takes longer to complete the search.
locate command doesn't search the entire filesystem, but looks through a regularly updated file database in the system. Thus, the search completes much faster.
In this tutorial, you will learn to install and use the
locate command in Linux.
- A system running Linux.
- An account with administrator privileges.
How to Install locate
Depending on which Linux distribution you are using, the
locate package may not be pre-installed.
To check if
locate is installed, enter:
locate is installed on your distribution, the command prints the following output:
For this tutorial, we have used Ubuntu 20.04, which doesn't come with the
locate utility pre-installed. In this case, the output message is:
Install locate on Ubuntu and Debian
Follow the steps below to install
locate on Ubuntu or Debian:
1. Update the package repository:
sudo apt update
2. Install the
locate package by running:
sudo apt install mlocate
Install locate on CentOS and Fedora
Follow the steps below to install
locate on CentOS or Fedora:
1. Update the package repository:
sudo yum -y update
2. Run the following command to install
sudo yum install mlocate
Note: Installing the
mlocate package creates a cron job that runs the
updatedb command every 24 hours and updates the database. To manually update the database, use
How to Use the locate Command in Linux With Examples
locate command finds files in Linux using the file name.
locate is used for obtaining instantaneous results, and it is an essential utility when speed is a priority.
The command performs the search using a database containing bits of files with the corresponding paths in the system. However,
locate doesn't check for files outside the database, which means it doesn't report about files created after the most recent database update.
The syntax for the
locate command is:
locate [options] [pattern]
Some useful options are:
|Displays only the entries matching all the specified pattern(s).|
|Matches only the base name against the specified patterns.|
|Outputs the number of matching entries instead of the file names.|
|Replaces the default database with |
|Only displays entries for existing files.|
|Use to check whether files exist if the |
|Ignores pattern case sensitivity.|
|Ignores punctuation and spaces when matching patterns.|
|Use to exit successfully after finding a |
|Separates output entries using the |
|Prints the statistics about each read database to standard output instead of searching for files.|
|Hides any errors encountered while reading and processing databases.|
|Used for searching a basic regular expression |
|Matches only the whole path name against the specified patterns.|
|Displays the help file with a list of all available options.|
The following sections list helpful examples of using the
Search for a File
The simplest way to use the
locate command is to input the pattern you want to search for.
For example, search for all files containing the mysql pattern in the filename by running the following command:
The output lists all the absolute paths for the files containing the mysql pattern in the filename.
Format the Output
When the search result is a long list of files, pipe the
locate command into
less for better readability and easier scrolling.
locate mysql | less
Navigate the output by pressing the Space bar to move forward, b to reverse, or Q to quit.
Show the Existing Files
locate command retrieves results almost instantaneously, the speed comes with a cost. Sometimes deleted files appear in the results because the database that
locate reads hasn't been updated since the files were deleted. Also, new files don't appear in the results if they were created after the last database update.
Eliminate these shortcomings using the
-e option to search the filesystem and include only the existing files in the results.
In the example above, we first deleted a file using
rm. Searching for the file with
locate shows the deleted file's location. However, when using the
locate shows no results since the file was removed.
Note: To permanently delete a file and prevent its recovery, use the shred command.
Count the Existing Files
Print the number of matched files instead of the file names and their absolute paths by specifying the
locate -c mysql
The output contains only the number of files containing the mysql string in the filename. All other information is suppressed.
Disable Errors While Searching
-q option instructs
locate to suppress any errors that might show up while reading a database.
In the following example,
locate uses a different database to perform the search. The command first reports that the database doesn't exist.
However, specifying the
-q option suppresses the error:
Limit the Number of Search Results
Limit the number of search results with the
-n option to avoid redundant results. For example, limit the search to only ten results by entering:
locate *.txt -n 10
The output shows only the first ten files matching the search pattern.
Ignore Case Sensitive Files
locate performs a case-sensitive search when processing the input query. Instruct
locate to ignore case sensitivity using the
In the following example, we first searched for example_file in lowercase, and
locate showed no output because the filename contains uppercase letters.
Searching for the file in uppercase shows the file's location:
Performing the same search in lowercase and specifying the
-i option ignores case-sensitivity and shows the file in the output:
Search for a File with an Exact Name
locate parses the input pattern as a string and shows all files containing the input pattern within the filename. For example, searching for mysql shows all files containing the mysql string as part of the filename, instead of files whose entire filename is mysql.
Search for a file with an exact name using the
-r (regular expression) option.
The output shows only the files whose filename completely matches the input pattern.
Note: The dollar sign (
$) at the end of a regular expression marks the end of a line. The forward slash character (
/) denotes regular expression boundaries.
Separate Output Entries with ASCII NUL
The output entries that
locate produces are separated by a newline (
\n) character. Use the
-0 option to separate entries with
ASCII NUL instead of the newline character.
locate -0 apache
The default separator is no longer the newline character, and the entries are separated with
View Database Statistics
locate command allows you to see various database statistics, including the number of directories and files stored in the database. To display database statistics, specify the
The output states which database
locate is currently using, the number of directories and files, and the database size in bytes.
Note: Learn everything about databases in our comprehensive article on databases and database systems.
Update locate Database
The database that
locate uses automatically updates daily at the same time. To update the database manually and make sure the file index is correct, run the following command:
The update process takes a few seconds to complete, depending on the number of files on the system.
Choose a Different mlocate Database
locate to use a database other than the default one by specifying the
-d option. The feature is helpful when looking for results not present in the default
To specify a different database, use the following syntax:
locate -d [new database path] [pattern]
Ignore Diacritics and Accent Differences
locate command uses ordinary letters for result matching, which means that filenames containing letters with diacritics do not appear in the search results. Use the
-t option to instruct
locate to ignore such differences between letters and include diacritics in the results.
Searching for the nice-cafe pattern shows no results in the example above because the filename contains a diacritical mark. Searching for the same pattern again and specifying the
-t option shows the nice-café file path as a result, ignoring the diacritic in the filename.
This guide showed how to use the
locate command to quickly search for files in a filesystem. While the utility has its drawbacks, the utility is an excellent solution for finding files when speed is a priority.
For other useful Linux commands, check out our comprehensive Linux commands cheat sheet with a downloadable PDF document.