The command locate
is present in the Unix system, and its functionality is search files or directories in our system, it uses a database so after we update the database the search is very fast.
These are the steps to use locate on Mac:
Update the database
We need to update the database of files and directories; it is recommended to update the database after a time.
This command to update the database:
sudo /usr/libexec/locate.updatedb
The first time it takes a long time to create the database.
I have a symlink to the binary file, this way you don't need introduce the whole path every time:
sudo ln -s /usr/libexec/locate.updatedb /usr/local/bin/updatedb
Now you can restart the terminal session and updatedb
is avaliable.
sudo updatedb
Search a file or directory
The syntax to search a file or directory is simple; you only need put the command locate next to the file or directory name:
locate [target]
Example:
locate file.txt
There are a couple extra options (man locate
):
-0 Print pathnames separated by an ASCII NUL character (character code 0) instead of default NL
(newline, character code 10).
-S Print some statistics about the database and exit.
-c Suppress normal output; instead print a count of matching file names.
-d database
Search in database instead of the default file name database. Multiple -d options are allowed.
Each additional -d option adds the specified database to the list of databases to be searched.
The option database may be a colon-separated list of databases. A single colon is a reference
to the default database.
$ locate -d $HOME/lib/mydb: foo
will first search string ``foo'' in $HOME/lib/mydb and then in /var/db/locate.database.
$ locate -d $HOME/lib/mydb::/cdrom/locate.database foo
will first search string ``foo'' in $HOME/lib/mydb and then in /var/db/locate.database and then
in /cdrom/locate.database.
$ locate -d db1 -d db2 -d db3 pattern
is the same as
$ locate -d db1:db2:db3 pattern
or
$ locate -d db1:db2 -d db3 pattern
If - is given as the database name, standard input will be read instead. For example, you can
compress your database and use:
$ zcat database.gz | locate -d - pattern
This might be useful on machines with a fast CPU and little RAM and slow I/O. Note: you can
only use one pattern for stdin.
-i Ignore case distinctions in both the pattern and the database.
-l number Limit output to number of file names and exit.
-m Use mmap(2) instead of the stdio(3) library. This is the default behavior and is faster in
most cases.
-s Use the stdio(3) library instead of mmap(2).
Comments: