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