Stop using locate on command line interface.
– locate uses a prebuilt database and can be updated only by root
– locate will fail to name files that were created since the last database update
– locate is insecure
– locate is not flexible.
Start using find. ‘man find’ is a great place to start. With find you can search files or directories by name, creation date, modification time, extension, size, owner, group, case sensitive and insensitive, path, readable, permissions, type and operatos. Also, you can use actions such as: delete, exec, print …
Basic examples:
# Find a file in a current working directory find . -name example.txt # Find a file in case insensitive (Example.txt, example.txt, example.TXT) find . -iname example.txt # Find on a specified dir example find /path -name example.txt # Find on multiple dirs find /path /usr /etc -name example.txt # Find for all files with a certain extension find /path -name "*.c" # Find by type find /path -type d # for dirs find /path -type f # for files # Find by permission (example - with chmod 777) find /path -perm 0777 # Find by size find /path -size +100M # a file with more than 100MB find /path -size +100M -size -300M # a file with more than 100MB but less than 300MB # Find by modification time find /path -mtime 1 # last 24 hours find /path -mtime -3 # last 3 days # Find by creation time find /path -ctime +7 # more than 7 days ago find /path -ctime -7 # less than 7 days ago find /path -ctime 7 # exactly 7 days ago # Find by accesed time find /path -atime +7 # more than 7 days ago find /path -atime -7 # less than 7 days ago find /path -atime 7 # exactly 7 days ago # Find by group (gid) find /path -gid 5002 # Find by owner (username) find /home -user www-data # Find all empty find /path -type f -empty # files find /path -type d -empty # dirs