Search for Files by Filename in Linux
To look for a file by its name in Linux, use the find command. It will recursively scan the directories on your system and return a list of matches found.
The find Command Syntax
The Linux find command syntax looks like this:
find [options] [path...] [expression]
options- this attribute controls optimisations, debugging and symbolic link handling options.path- the directory to start searching from. If none is supplied the search will be from your current working directory.expression- the name of the file to search for, this can contain RegEx for partial matches.
Find Files & Directories by Name
To use the Linux find command, pass the -name flag followed by the name of the file to look for on your system. find will begin a recursive search from your current working directory.
find -name "laravel.log"
Search in a Directory
To search in a specific directory on your system, pass the path to the directory like this:
find /var/www -name "laravel.log"
Search for Directories Only
The default behaviour of the find command is to return matching directories and files. To search for directories only, add the -type flag and set its value to d.
find /var/www -type d -name "storage"
Search for Files Only
To search for files only set the value of the -type flag to f.
find /var/www -type f -name "laravel.log"
Follow Symbolic Links
To follow symbolic links, add the -L option at the start of the command.
find -L -name "laravel.log"
Using Regular Expressions
You will often need to match all files with a particular extension, or files starting with a specific phrase. Situations like this can be handled using find with regular expressions like this:
find /var/www -type f -name "*.js"
Here is another example matching part of a filename with a .js extension:
find /var/www -type f -name "web*.js"
Case Insensitive Search
The default behaviour of find is to be case-sensitive. To perform case-insensitive searches pass the expression to match after the -iname flag instead of -name.
find /var/www -type f -iname "WEB*.js"
Find Empty Files by Name in Linux
To find only empty files add the -empty flag to the find command.
find /var/www -type f -iname "*.js" -empty
Find Files Modified in the Last X Number of Days in Linux
To return files with a name that were modified in the last X number of days, use the -mtime flag on the find command and pass the number of days.
find /var/www -type f -iname "*.js" -mtime 7
Find and Delete Files by name in Linux
Caution - do not run this command unless you are absolutely sure it is going to do what you want it to.
To delete files by their filename, pass the -delete flag to the find command like this:
find /var/www -type f -iname "*.js" -delete
