25 June 2017 macOS How to search files or directories on Mac using the command locate 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).