In this tutorial on how to use the ‘Find command’ in Linux, we will discuss in brief what is find command & will also discuss some examples for the same.
Find command is a pretty useful command for easily locating files & folders in Linux. What makes it a powerful command is that we can use a number of search criteria/options to refine the search.
It can be found & used on almost all Linux distros by default.
Recommended Read: How to use NMAP command to test Server/Network Security
Also Read: How to create a free SSL certificate using Let’s Encrypt in Linux
Syntax for using Find command
To use the find command, the basic syntax is:-
# find location search-criteria search-term
Now that we have some understanding of what the find command is & how to use the find command in Linux. Let’s discuss some examples as well,
Examples of the FIND command in Linux
Finding files on the system
To find all the files in the ‘/’ folder i.e. root directory, use,
# find / -type f
To search for the file in a particular directory, use,
# find /etc/ -type f
Finding directories on the system
To find all the folders/directories in the ‘/’ folder i.e. root directory, use,
# find / -type d
To look for all the directories in a particular directory, use,
# find /etc/ -type d
Finding files based on the name
If you know the name of the file or folder you are looking for, then you can also use that to make search easy & fast with the following command,
# find /etc -iname “*.txt”
This shows all the files in the /etc folder with extension .txt. One thing to consider here is that it will ignore a case-sensitive file. It will show all the files ending with .txt but will ignore files ending with .TXT or .Txt.
To include all such files as well, we can use ‘-name’ instead of ‘-iname’, for example,
# find /etc -name “*.txt”
Invertive name search
Find command can also be used to exclude some files & only show the remaining files, use,
# find /etc -not -name “*.txt”
above command will list all the files & directories that do not have extension “.txt” at the end.
Finding files/directories with size
With the find command, we can also find files based on the file sizes. Use the following example as reference,
# find /etc -type f -size 2M
This will show all the files in the /etc folder with the size of 2 Megabytes.
Combining search criteria
We can also combine more than one search option to produce a more refined search,
# find /etc -name ‘test*’ ! -name ‘*.php’
here, it will find all the files with the name ‘test’ at the start in ‘/etc’ folder which does not have extension .php. “!” here is the equivalent of AND operator.
Also, we can combine two search criteria & produce results when any of the two search criteria are satisfied.
# find /etc -name ‘test*’ -o -name ‘*.txt’
Here “-o” is equivalent to OR operator.
Search based on file permissions
To find files based on their permissions, use,
# find /etc -type f -perm 0400
This will show all the files in the /etc folder with the permission of 0644.
# find /etc -type f -perm /u=r
The result for the above command will show all files for a user with only read permissions.
Finding files with user & group ownership
Similar to how we can locate files with particular permissions, we can also use find command to locate files with a particular owner,
# find / -user dan
Here, we are locating all the files that are created by user ‘dan’. Similarly, we can also search for files or folders that are owned by a group by replacing -user with -group.
# find / -group dan
Finding files based on their modification time, Access time & Change time
# find / -mtime 10
It will find all the files that were modified in the last 10 days. Replace mtime with -atime to find all the files that were accessed in the last 10 days.
# find / -cmin -60
It will find all the files that were changed in the last 60 minutes.
# find / -mmin -60
It will find all the files modified in the last 60 minutes.
# find / -amin -60
It will find all the files accessed in the last 60 minutes.
Listing all the found files
To get all files and present them in order as ‘ls command’ would, use,
# find . -exec ls -ld {} \;
This will show all the files in output as would be shown by ls command.
Finding & deleting the found files
We can also combine some options to locate files & then can also perform an operation to delete them, all in a single command,
# find /etc -type f -name *.txt -size -1M -exec rm -f {} \;
This command will find all the files with .txt as an extension with a size of less than 1 Megabyte & will execute the rm/delete command on found files.
Getting Help
Like with any other Linux command, we can also take help from the OS documentation to get more detailed information about the command. Use,
# find –help
With this, we complete our tutorial on how to use the FIND command in Linux. These are only some examples, certainly, there are plenty of ways that you can use the find command to get what you need. If you run into any issues or have any questions, please do send us using the comment box below.
Hi,
Thank you so much for the great topic,