How to Use ‘find’ Command to Search for Multiple Filenames (Extensions) in Linux
Many times, we are locked in a situation where we have to search for multiple files with different extensions, this has probably happened to several Linux users especially from within the terminal.
There are several Linux utilities that we can use to locate or find files on the file system, but finding multiple filenames or files with different extensions can sometimes prove tricky and requires specific commands.
One of the many utilities for locating files on a Linux file system is the
find utility and in this how-to guide, we shall walk through a few examples of using find to help us locate multiple filenames at once.
Before we dive into the actual commands, let us look at a brief introduction to the Linux
# find directory options [ expression ]
Let us proceed to look at some examples of find command in Linux.
1. Assuming that you want to find all files in the current directory with
.txt file extensions, you can do this by running the command below:
# find . -type f \( -name "*.sh" -o -name "*.txt" \)
Interpretation of the command above:
.means the current directory
-typeoption is used to specify file type and here, we are searching for regular files as represented by
-nameoption is used to specify a search pattern in this case, the file extensions
It is recommended that you enclose the file extensions in a bracket, and also use the
\ ( back slash) escape character as in the command.
2. To find three filenames with
.c extensions, issues the command below:
# find . -type f \( -name "*.sh" -o -name "*.txt" -o -name "*.c" \)
3. Here is another example where we search for files with
# find /home/aaronkilik/Documents/ -type f \( -name "*.png" -o -name "*.jpg" -o -name "*.deb" -o -name ".pdf" \)
When you critically observe all the commands above, the little trick is using the
-o option in the find command, it enables you to add more filenames to the search array, and also knowing the filenames or file extensions you are searching for