The Linux find command is a powerful tool that enables system administrators to locate and manage files and directories based on a wide range of search criteria.
It can find directories and files by their name, their type, or extension, size, permissions, etc.
Table of Contents
Find Command Syntax
The general syntax for the find command is as follows:
find [options] [path...] [expression]
Get Your Free Linux training!
Join our free Linux training and discover the power of open-source technology. Enhance your skills and boost your career! Learn Linux for Free!- The options attribute controls the treatment of the symbolic links, debugging options, and optimization method.
- The path… attribute defines the starting directory or directories where find will search the files.
- The expression attribute is made up of options, search patterns, and actions separated by operators.
Find all the files in the /var/log directory that were modified in the last 7 days:
find /var/log -mtime -7
How to Use find Command in Linux
For example, if you want to find all of the files that have the word “file” in their name, you can run the following command:
find . -name '*file*'
This command will search through the current directory and all of its subdirectories for files that have the word “file” in their name.
If you want to find all of the files that have the word “file” at the beginning of their name, you can use the following command:
find . -name 'file*'
This command will search through the current directory and all of its subdirectories for files that have the word “file” at the beginning of their name.
Advanced options in Find command
The “find” command also allows you to use advanced search options to filter results.
- find command with the “-type” option to search for files of a specific type.
- find command with the “-mtime” option to search for files that have been modified in a certain amount of time.
- find command with the “-maxdepth” option to specify how deep you want to search into directories.
Find all the files in the /var/log directory that were modified in the last 7 days:
find /var/log -mtime -7
Find Files with Name in Linux
To find files with a specific name in Linux, you can use the find command with the -name option. Here’s the basic syntax:
find [path] -name [filename]
Where path is the directory to search, and filename is the name of the file you want to find. Here are some examples:
To find all files named index.html in the current directory and its subdirectories:
find . -name index.html
To find all files named config.json in the /etc directory and its subdirectories:
find /etc -name config.json
To find all files named file.txt in the /home directory and its subdirectories, but only show the filename and not the full path:
find /home -name file.txt -printf "%f\n"
To find all files in the current directory and its subdirectories with a name that starts with file and ends with .txt:
find . -name "file*.txt"
These are just a few examples of how to use the find command to find files with a specific name in Linux. The possibilities are almost endless, as you can use various options to refine your search based on different criteria.
Command | Description |
---|---|
find . -name howtouselinux.txt | Find Files Using Name in Current Directory |
find /home -name howtouselinux.txt | Find Files Under Home Directory |
find / -type d -name howtouselinux | Find Directories Using Name |
find . -type f -name “*.txt” | Find all txt Files in Current Directory |
Find Files with Permission in Linux
To find files with a specific permission in Linux, you can use the find command with the -perm option. Here’s the basic syntax:
find [path] -perm [permission]
Where path is the directory to search, and permission is the permission code of the file you want to find. The permission code can be specified in either octal or symbolic notation.
Here are some examples:
To find all files in the current directory and its subdirectories with 777 permissions:
find . -type f -perm 0777
To find all files in the /var directory and its subdirectories that do not have 777 permissions:
find /var -type f ! -perm 0777
To find all directories in the /home directory and its subdirectories with 755 permissions:
find /home -type d -perm 0755
Command | Description |
---|---|
find . -type f -perm 0777 -print | Find Files With 777 Permissions |
find / -type f ! -perm 777 | Find Files Without 777 Permissions |
find / -perm 2644 | Find SGID Files with 644 Permissions |
find / -perm 1551 | Find Sticky Bit Files with 551 Permissions |
Excluding Files and Directories in Find command
You can use the “find” command with the “-exclude” option to exclude certain files from your search.
For example, if you want to find all of the files that have the word “file” in their name, but you want to exclude all of the PDF files, you can run the following command:
find . -name 'file*' -exclude *.pdf
This command will search through the current directory and all of its subdirectories for files that have the word “file” in their name, but it will exclude all of the PDF files.
You can also use the “-exclude-dir” option to exclude certain directories from your search. For example, if you want to find all of the files that have the word “file” in their name, but you want to exclude all of the files in the “tmp” directory, you can run the following command:
find . -name 'file*' -exclude-dir tmp
This command will search through the current directory and all of its subdirectories for files that have the word “file” in their name, but it will exclude all of the files in the “tmp” directory.
Combine options together in Linux find command
You can use multiple options together with the find command to perform a more specific search. Here’s an example that combines several options:
find /home -type f -name "*.txt" -size +10M -user john -mtime -30
This command will find all files with the .txt extension that are larger than 10 megabytes, owned by the user john, and have been modified within the last 30 days, in the /home directory and its subdirectories.
Let’s break down the options used in this command:
Option | Description |
---|---|
-type f | Specifies that we’re only interested in regular files (not directories, symbolic links, etc.) |
-name “*.txt” | Specifies that we’re looking for files with names that end with .txt |
-size +10M | Specifies that we’re looking for files that are larger than 10 megabytes |
-user john | Specifies that we’re only interested in files owned by the user john |
-mtime -30 | Specifies that we’re looking for files that have been modified within the last 30 days |
By combining these options, we can perform a very specific search for files that meet our criteria. You can also use other options with the find command to further refine your search based on other criteria such as permissions, groups, and access times.
Find Files with User and Group in Linux
Command | Description |
---|---|
find /home -user howtouselinux | Find all Files Based on User |
find /home -group howtouselinux | Find all Files Based on Group |
Find Files and Directories Based on Date and Time in Linux
Command | Description |
---|---|
find / -mtime 50 | Find Last 50 Days Modified Files |
find / -atime 50 | Find Last 50 Days Accessed Files |
find / -mtime +50 –mtime -100 | Find Last 50-100 Days Modified Files |
find / -cmin -60 | Find Changed Files in Last 1 Hour |
Find Files and Directories Based on Size in Linux
Command | Description |
---|---|
find / -size 50M | Find 50MB Files |
find / -size +50M -size -100M | Find Size between 50MB – 100MB |
find / -type f -size +100M | Find larger than 100MB files |
find / -type f -name *.mp3 -size +10M | Find all .mp3 files with more than 10MB |
Find Files with Not operator in Linux
Command | Description |
---|---|
find . -type f -not -name “*.html” | Find files not ending with the .html file extension |
find . -type f ! -name “*.html” | Find files not ending with the .html file extension |
Related: