In GNU/Linux env, the locate command is a very good tool for locating folders/directories and files. It uses an updated system database, unlike the find command, which searches without indexes, making the locate command much faster and more efficient, especially if we have a system with few resources and/or high demand. The only drawback of the locate command is if its database does not exist, is outdated, or is corrupted.
Install
For install* in Debian (Kubuntu, Ubuntu) distros:
1 | [user@host ~]$ sudo apt-get install mlocate |
*We need root permission
For install* in RHEL (RedHat, Fedora, Centos, CentOS Stream, AlmaLinux, Rocky) distros:
1 | [user@host ~]$ sudo yum install mlocate -y |
*We need root permission
If wish search a folder or file:
1 | [user@host ~]$ locate file.txt |
1 | [user@host ~]$ locate report |
1 | [user@host ~]$ locate -i rEpOrT |
If is the first time in use the command locate get the error:
1 | [user@host ~]$ locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory |
We can fix with the command:
1 | [user@host ~]$ sudo updatedb && locate -e bench-repo |
In this time you can search any wish.
Additional parameters
Resume
The locate command is a great, very fast tool compared to the find command. However, the locate command searches a database, so the results may be unexpected or inaccurate (it may be outdated, corrupted, or empty).
Another drawback is that the locate command will only show you files that your user has access to. The locate command is good for searching directories or files, but it can’t be better than the find command.