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.

Find Multiple File Names in Linux

Find Multiple File Names in Linux

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 utility.

The simplest and general syntax of the find utility is as follows:

# 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 .sh and .txt file extensions, you can do this by running the command below:

# find . -type f \( -name "*.sh" -o -name "*.txt" \)
Find .sh and .txt Extension Files in Linux

Find .sh and .txt Extension Files in Linux

Interpretation of the command above:

  1. . means the current directory
  2. -type option is used to specify file type and here, we are searching for regular files as represented by f
  3. -name option is used to specify a search pattern in this case, the file extensions
  4. -o means “OR”

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 .sh, .txt and .c extensions, issues the command below:

# find . -type f \( -name "*.sh" -o -name "*.txt" -o -name "*.c" \)
Find Multiple File Extensions in Linux

Find Multiple File Extensions in Linux

3. Here is another example where we search for files with .png, .jpg, .deb and .pdf extensions:

# find /home/aaronkilik/Documents/ -type f \( -name "*.png" -o -name "*.jpg" -o -name "*.deb" -o -name ".pdf" \)
Find More than 3 File Extensions in Linux

Find More than 3 File Extensions in Linux

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.

Conclusion

In this guide, we covered a simple yet helpful find utility trick to enable us find multiple filenames by issuing a single command. To understand and use find for many other vital command line operations, you can read our article below.

Don’t Miss: Master Linux ‘find’ Command with This 35-Examples

Best Affordable Linux and WordPress Services For Your Business
Outsource Your Linux and WordPress Project and Get it Promptly Completed Remotely and Delivered Online.

If You Appreciate What We Do Here On TecMint, You Should Consider:

  1. Stay Connected to: Twitter | Facebook | Google Plus
  2. Subscribe to our email updates: Sign Up Now
  3. Get your own self-hosted blog with a Free Domain at ($3.45/month).
  4. Become a Supporter - Make a contribution via PayPal
  5. Support us by purchasing our premium books in PDF format.
  6. Support us by taking our online Linux courses

We are thankful for your never ending support.

Aaron Kili

Aaron Kili is a Linux and F.O.S.S enthusiast, an upcoming Linux SysAdmin, web developer, and currently a content creator for TecMint who loves working with computers and strongly believes in sharing knowledge.

Your name can also be listed here. Got a tip? Submit it here to become an TecMint author.

RedHat RHCE and RHCSA Certification Book
Linux Foundation LFCS and LFCE Certification Preparation Guide

You may also like...

11 Responses

  1. sudarshan says:

    copying alternate lines from file to specified directory

  2. Anusha says:

    How to find all .cpp files which consist of sub string shares in the file name?

  3. Karl says:

    Ravi,

    Thanks for sharing.

    How to use the find command to search for a file with a range of dates?

  4. anonymous says:

    You can pipe the output of find to egrep:

    # find . -type f | egrep -i "[.]sh$|[.]txt$"
    
  5. vlad says:

    ls *.ext1 *.ext2
    seems to be way simpler.

    • Aaron Kili K says:

      @vlad

      That works but it may not be efficient and reliable enough for the job, especially when you want to search in several locations.

    • Surya says:

      ls” works only for current directory content listing. It won’t search files recursively in any sub directories if available. So, we need to use find command only which will search in sub-directories also.

  6. libreman says:

    Another way is using -regextype and -iregex switch, fore example:

    $ find . -regextype posix-egrep -iregex '.*\.(xml|txt)$' -type f

    The above command find all files with xml or txt extension.

    • Ravi Saive says:

      @Libreman,

      Thanks for the great tip, If find it really very useful commandline trick to achieve the same results, hope it will be useful to others..

Leave a Reply to anonymous Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.