How to search file using certain name and extension in Linux

Category : Linux/ Unix

This guide will tell you about the basic commands used to search a file using a certain name and extension in Linux.

In some cases, you would need to find the location of a given file or to search for a certain text in all files under a directory. Linux provides two different commands to accomplish this.

  1. Find command
  2. Grep command

Find command to search a file in Linux:

Find is a very powerful tool and accepts various arguments allowing you to specify the exact search term (i.e search by name, by type or even by modified time).

For example, to search for a file called myFile.txt under the current folder (and all subfolders), you would need to use the following command:

find . -name ips.txt

find command SSH

If you are uncertain about the file name or would like to match a part of the name, you can use a wildcard pattern:

find . -name "myFile*"

If you would like to list only directories and leave all files out of the result:

find . -type d

Or if you want to filter only files and folder modified in the last 2 days, you would need to use:

find . -mtime -2

Grep command:

You can also search for a given text in the content of the files as well. The command you should be using, in this case, is grep. Grep is a very powerful tool and accepts various command-line arguments. For a full list, it is recommended to check the manual pages by typing man grep.

An example of using grep to find a certain text can be found below:

grep "database" configuration.php

The above command instructs grep to look for the string “database” in the configuration.php file and display the containing line. If you don’t know which file contains the text, you can use:

grep -r -H "database" *

This will make grep look recursively (-r option) and provide the result in a human-readable format (-H option) for the string “database” in all (*) files under the current working directory.

To only list the file names containing the string you are searching but omit the line containing it, you can use the -l argument:

grep -l "database" *

This will display the filenames containing the word “database”, but will not actually list the line containing it.

Grep can also be used to filter the results from other commands. For example, the line below will only output configuration.php result:

ls -la | grep configuration.php

To find a certain installed binary in the whole server, it would be best to use an alternative command – whereis or which:

whereis perl

Or

which perl

The execution of the above commands will locate the perl binary and display the full path(s) to it.

That’s it! These commands can be used to search for a file with a certain name or extension in Linux.

You can find more guides and tutorials on Linux/Unix here