Home Linux Commands How to Find Files by Extension in Linux

How to Find Files by Extension in Linux

Being a Linux user, you might face a situation where you require to search for multiple files having different extensions. However, searching for files in Linux, especially when looking for multiple files simultaneously in a directory containing many files, can be a tricky process.

But don’t worry, if you’re looking for some easy methods to perform this task then you’ve surely come to the right place!!!

In this guide, we will cover different methods or utilities of Linux that will help you to find desired files in your directory with different extensions.

1. Search Files With Specific Extensions in Linux

The find command is a beneficial tool employed to search/locate files and directories in Linux, which also provides the facility of searching the files by their extensions.

Let’s state the syntax of the find command to search for all the files that have any specific extension.

$ find . -type f -name "*.<fileExtension>"

Here is the breakdown of the above syntax:

  • -type – This flag indicates the type of documents to search, with "f" defining the type as “file“.
  • -name – Its purpose is to find files by their names. In our case, there are extensions, so the -name flag limits the search to the specific extension mentioned after it.
  • "*.<fileExtension>" – The “*” represents all the files that have defined extensions.

Now that we have discussed the syntax of the find command to search files depending on their extensions, let’s see some examples to understand it’s working better.

Find Configuration Files in Linux

We will find all the files which have the extension “.conf” by executing the command listed below.

$ find . -type f -name "*.conf"
Find Files by Extension in Linux
Find Files by Extension in Linux

As you observed, the command successfully listed all the files with the “.conf” extension (configuration files).

Find Zip Files in Linux

Moving forwards, let’s try to find all the files with the “.zip” extension in the “Documents” directory by executing the stated command.

$ find ~/Documents -type f -name "*.zip"
Find Zip Files in Linux
Find Zip Files in Linux

Find Multiple Files (Extensions) in Linux

You can simultaneously search for files with different extensions by using the “find” command with the "-o" flag. For example, the command mentioned below to locate all the files with the “.xconf” and “.zip" extensions.

$ find ~/ \( -name "*.xconf" -o -name "*.zip" \)
Find Multiple Files by Extensions in Linux
Find Multiple Files by Extensions in Linux

2. Find Files by Extensions Using Find and Grep Commands

Now that you’ve understood how to find files using the find command, let’s take a look at its combination with the grep command, which is a very useful command offered by Linux to find text patterns within the searched files. The files are searched by the find command and then text patterns are identified by the grep filter.

The syntax of the find command with the grep command to locate files by extensions is stated below.

$ find . -type f | grep 

Let’s understand the above syntax:

  • | – It is utilized to combine two commands, in our case: find and grep. It gets output from the find command i.e.; all the files in the directory and gives them as input to the grep filter, which will filter the files with a specific extension and list them.
  • grep – It is the keyword for the grep command and it filters the files with a specific extension.
  • <fileExtension> – The file extension is the type of file that you’re supposed to look for.

Find PNG Files in Linux

Let’s execute the command mentioned below to find the files in the directory “Downloads” and the grep command will filter the files with the “.png” extension only.

$ find ~/Downloads -type f | grep .png
Find PNG Files in Linux
Find PNG Files in Linux

3. Find Files by Extensions Using Grep and ls Commands

If you are already aware of the directory where your files exist, navigate to it, and then use the ls command to search files by extension from the current directory. However, we can further combine it with the grep command to obtain our desired result.

$ ls | grep -i ".<fileExtension>"

Let’s analyze the provided syntax:

  • ls – This command displays the list of the files and directories in the current working directory.
  • | – It will join the ls command with the grep command, to provide all the files in the current directory to the grep command to search for files by extension.
  • -i – This flag enables grep to search for a specific text pattern in the files irrespective of the case of the letters.

Let’s execute the command mentioned below to locate all the files extension “.conf” in the current directory, irrespective of the letter case.

$ ls | grep -i ".conf"
Search Files by Extension in Linux
Search Files by Extension in Linux

Now that you have used the “find” and “ls” commands, let’s discuss another command for searching files by extensions in Linux.

4. Find Files by Extensions Using locate Command

The “locate” command is a potent utility used to find files and directories in most Linux systems using the pre-built database of filenames and paths, which makes it convenient and easy to use.

$ locate "<fileName>"

It comes pre-installed in most Linux systems, however, if you don’t have one, you can install it using your package manager as shown.

$ sudo apt install mlocate         [On Debian, Ubuntu and Mint]
$ sudo yum install mlocate         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
$ sudo emerge -a sys-apps/mlocate  [On Gentoo Linux]
$ sudo apk add mlocate             [On Alpine Linux]
$ sudo pacman -S mlocate           [On Arch Linux]
$ sudo zypper install mlocate      [On OpenSUSE]    

Once installed, run the following command to update the file database used by the locate command on your system.

$ sudo updatedb

Once the updatedb process is complete, you can use the locate command to quickly find files and directories on your system based on their names or extensions as shown.

$ locate ".xconf"
Locate Files by Extension in Linux
Locate Files by Extension in Linux

5. Find Files by Extensions Using GUI Tools

After going through all the command-line commands let’s take a look at the GUI method for finding files. Some people prefer the GUI method over CLI commands.

To find files with desired extensions in any file, follow these steps:

  • Open the File Manager.
  • Move to any directory in which you want to find the files.
  • Activate the search bar and type the desired extension for example “.zip” as shown in the figure.
Find Files via GUI
Find Files via GUI

We have successfully searched all the files with the extension “.zip”.

Conclusion

File extensions are the suffix that appears after the “.” (dot) in the file’s name. Sometimes users want to search for files that have a particular extension. This guide provided numerous methods to search files by extensions.

Ravi Saive
I am an Experienced GNU/Linux expert and a full-stack software developer with over a decade in the field of Linux and Open Source technologies. Founder of TecMint.com, LinuxShellTips.com, and Fossmint.com. Over 150+ million people visited my websites.

Each tutorial at UbuntuMint is created by a team of experienced writers so that it meets our high-quality standards.

Was this article helpful? Please add a comment to show your appreciation and support.

2 thoughts on “How to Find Files by Extension in Linux”

  1. Good article!

    Very useful!

    However, I would like a different approach. What about files that don’t have an extension? I have a lot of them because I think that file extensions are ugly.

    Reply
    • @Flaviano,

      I’m glad you found the information helpful! Files without extensions, also known as “extensionless files,” can indeed be a unique approach, but the operating system might not recognize the file type automatically based on the file name.

      Therefore, you need to manually set each file type with the appropriate program or use the following script that will add the extension ".txt" to several files that don’t have an extension in a directory.

      for file in /path/to/directory/*; do
          mv "$file" "$file.txt"
      done
      
      Reply

Got something to say? Join the discussion.

Thanks for choosing to leave a comment. Please keep in mind that all comments are moderated according to our comment policy, and your email address will NOT be published or shared. Please Do NOT use keywords in the name field. Let's have a personal and meaningful conversation.