Find command is one of the most useful & important command used in Linux. Its available & installed by default on almost all the versions of Linux. Everything on Linux is in the form of files, & we should be able to locate a file when required.
With the use of find command, we can look for the files that are needed based on a number of search criteria, we can use single or combine a number of criteria & then we can perform actions on the result obtained. In this tutorial, we are going to discuss find command with the help of some examples,
To list all the files in current directory & the sub-directories, we can use
$ find
Alternatively, we can also use ‘find . ’ which will also provide the same result as above.
To look only for directories, we can use
$ find . -type d
To search all the files only & not directories, use
$ find . -type f
To find all the files in a particular directory, we can use
$ find /root
This command will look for all the files in /root directory.
To look for a file by its name in a particular directory, command is
$ find /root -name "lpicentral.txt"
This will look for lpicentral.txt file in /root folder. We can also look for all the files with .txt extension,
$ find /root -name "*.txt"
To find a file by its name in multiple directories, we can use
$ find /root /etc -name "lpicentral.txt"
With this command, we can look for lpicentral.txt file in /root & /etc directories.
To look for file with its name irrespective of the case i.e. whether its upper case or lower case, we can use ‘-iname‘ option in find command
$ find /root -iname "lpicentral.txt"
The result of the command will provide all the files that are named lpicentral.txt, whether its in lower case or upper case or in mixed cases.
Let’s suppose we want to find all the files that are not the mentioned type, to achieve this we can use,
$ find /root -not -name "*.txt"
We can also combine more than one condition to search the files , Let’s suppose we want to search files of ‘.txt’ and ‘.html’ extensions
$ find . -regex ".*\.\(txt\|html\)$"
We can also combine multiple search criteria & then look for the files based on the fulfillment of any of the one condition using OR operator,
$ find -name "*.txt" -o -name "lpicentral*"
To look for files based on the permissions, use -perm option in find command
$ find /root -type f -perm 0777
To search for all the hidden files in a directory, command is
$ find ~ -type f name ".*"
To locate all the files with SGID bits, we can use
$ find . -perm /g=s
To locate all the files with SUID bits, we will use
$ find . -perm /u=s
To only look for the files that are executable, command is
$ find . -perm /a=x
We can also look for only read-only files using find command,
$ find /root -perm /u=r
To locate all the file that are owned by a particular user, for example lpicentral, we will use the following command,
$ find . -user lpicentral
To locate all the files that are owned by a particular group, use
$ find . -group apache
If we want want to search a file for which we know the exact size, then we can use ‘-size‘ option with find command to locate the file
$ find / -size -2M
If we are looking for a file for which we don’t know the actual size but know a range of size or just want to locate all the files within a size range, then we can also locate the file using that criteria
$ find / -size +2M -size -5M
We can also use find command to locate all the files whose size is greater than 50 MB
$ find / -size +50M
For example, we want to locate all the files that have been modified 8 days ago. We can accomplish that using ‘-mtime‘ option in find command
$ find / -mtime 8
Similarly like above example, we can also locate files that have been accessed 8 days ago using ‘-atime’,
$ find / -atime 8
To locate all the empty files on the system, we will use beneath command
$ find / -type f -empty
Similarly, to locate all the empty directories
$ find ~/ -type d -empty
To list largest or smallest file, we will combine ‘sort‘ command with find command & if we further want to list top three of those largest files, we will combine ‘head‘ command.
To list top three files in the current directory, command is
$ find . -type f -exec ls -s {} \; | sort -n -r | head -3
We can similarly find the smallest files in the current directory,
$ find . -type f -exec ls -s {} \; | sort -n | head -3
With find command, we can also achieve some advanced functionalities. For example, we can list all the files that have permission 644 and then change those permissions to 777. To do this, run
$ find / -type f -perm 644 -print -exec chmod 777 {} \;
We might be required to locate & delete files matching a criteria. To do this with find command, run
$ find / -type f -name 'lpicentral.*' -exec rm -f {} \;
These were some simple examples demonstrating the functionality of find command & it can be used to perform tedious, repetitive search/locate task more easy.
1) Lists all the files in current directory & its sub-directories
To list all the files in current directory & the sub-directories, we can use
$ find
Alternatively, we can also use ‘find . ’ which will also provide the same result as above.
2) Find all the files or directories of your present working directory
To look only for directories, we can use
$ find . -type d
To search all the files only & not directories, use
$ find . -type f
3) Lists all the files of a specific directory
To find all the files in a particular directory, we can use
$ find /root
This command will look for all the files in /root directory.
4) Find a file with name in a directory
To look for a file by its name in a particular directory, command is
$ find /root -name "lpicentral.txt"
This will look for lpicentral.txt file in /root folder. We can also look for all the files with .txt extension,
$ find /root -name "*.txt"
5) Find a file in multiple directories
To find a file by its name in multiple directories, we can use
$ find /root /etc -name "lpicentral.txt"
With this command, we can look for lpicentral.txt file in /root & /etc directories.
6) Find a file with name ignoring case
To look for file with its name irrespective of the case i.e. whether its upper case or lower case, we can use ‘-iname‘ option in find command
$ find /root -iname "lpicentral.txt"
The result of the command will provide all the files that are named lpicentral.txt, whether its in lower case or upper case or in mixed cases.
7) Find all file types other than the mentioned type
Let’s suppose we want to find all the files that are not the mentioned type, to achieve this we can use,
$ find /root -not -name "*.txt"
8) Find files with multiple conditions
We can also combine more than one condition to search the files , Let’s suppose we want to search files of ‘.txt’ and ‘.html’ extensions
$ find . -regex ".*\.\(txt\|html\)$"
9) Find files with using OR condition
We can also combine multiple search criteria & then look for the files based on the fulfillment of any of the one condition using OR operator,
$ find -name "*.txt" -o -name "lpicentral*"
10) Find all the files based on their permissions
To look for files based on the permissions, use -perm option in find command
$ find /root -type f -perm 0777
11) Find all the hidden files
To search for all the hidden files in a directory, command is
$ find ~ -type f name ".*"
12) Find all the files with SGID
To locate all the files with SGID bits, we can use
$ find . -perm /g=s
13) Find all the files with SUID
To locate all the files with SUID bits, we will use
$ find . -perm /u=s
14) Find all executable files
To only look for the files that are executable, command is
$ find . -perm /a=x
15) Find all the read-only files
We can also look for only read-only files using find command,
$ find /root -perm /u=r
16) Find all the files owned by a user
To locate all the file that are owned by a particular user, for example lpicentral, we will use the following command,
$ find . -user lpicentral
17) Find all the files owned by a group
To locate all the files that are owned by a particular group, use
$ find . -group apache
18) Find files of particular size
If we want want to search a file for which we know the exact size, then we can use ‘-size‘ option with find command to locate the file
$ find / -size -2M
19) Find all the files of size range
If we are looking for a file for which we don’t know the actual size but know a range of size or just want to locate all the files within a size range, then we can also locate the file using that criteria
$ find / -size +2M -size -5M
We can also use find command to locate all the files whose size is greater than 50 MB
$ find / -size +50M
20) Find files that are modified N days ago
For example, we want to locate all the files that have been modified 8 days ago. We can accomplish that using ‘-mtime‘ option in find command
$ find / -mtime 8
21) Find files that have been accessed N days ago
Similarly like above example, we can also locate files that have been accessed 8 days ago using ‘-atime’,
$ find / -atime 8
22) Find all the empty files or directories
To locate all the empty files on the system, we will use beneath command
$ find / -type f -empty
Similarly, to locate all the empty directories
$ find ~/ -type d -empty
23) Find largest and smallest files
To list largest or smallest file, we will combine ‘sort‘ command with find command & if we further want to list top three of those largest files, we will combine ‘head‘ command.
To list top three files in the current directory, command is
$ find . -type f -exec ls -s {} \; | sort -n -r | head -3
We can similarly find the smallest files in the current directory,
$ find . -type f -exec ls -s {} \; | sort -n | head -3
24) Find all the files with specific permissions & change them to 644 (or other permissions)
With find command, we can also achieve some advanced functionalities. For example, we can list all the files that have permission 644 and then change those permissions to 777. To do this, run
$ find / -type f -perm 644 -print -exec chmod 777 {} \;
25) Find all the files matching a criteria & delete them
We might be required to locate & delete files matching a criteria. To do this with find command, run
$ find / -type f -name 'lpicentral.*' -exec rm -f {} \;
These were some simple examples demonstrating the functionality of find command & it can be used to perform tedious, repetitive search/locate task more easy.
0 comments:
Post a Comment