Searching or finding files on a Linux system from the terminal can be a little of a challenge especially for newbies. However, there are several command line tools/utilities for locating files in Linux.
1. Find Command
find command is a powerful, widely used CLI tool for searching and locating files whose names match simple patterns, in a directory hierarchy. Using find is simple, all you need to do is provide a starting point (top of the directory hierarchy) where the search beings. This can be the current directory or any other directory where you suspect the file you are looking for is stored.
After the starting point, you can specify an expression (composed of test, actions, options and operators) which describes how to match files and what to do with the files that were matched.
2. Locate Command
locate command is another commonly used CLI utility for searching files quickly by name, just like find command. However, it is practically more efficient and faster compared to its counterpart because, instead of searching through the file system when a user initiates a file search operation (the way find works), locate queries a database which contains bits and parts of files and their corresponding paths on the file system.
This database can be prepared and updated using the updatedb command. Note that location will not report files created after the most recent update of the relevant database.
3. Grep Command
Although grep command is not a tool for directly searching files (its instead used to print lines matching a pattern from one or more files), you can employ it to locate files. Assuming you know a phrase in the file(s) you are looking for or you are looking for a file that contains a particular string of characters, grep can help you list all files that contain a particular phrase.
For example, if you are looking for a README.md file which contains the phrase “An assortment”, which you suspect should be somewhere in your home directory, possibly in ~/bin, you can locate it as shown.
$ grep -Ri ~/bin -e "An assortment" OR $ grep -Ri ~/bin/ -e "An assortment" | cut -d: -f1
Where the grep flag:
-R – means search the specified directory recursively
-i – means ignore case distinctions
-e – specifies the phrase to be used as a pattern for searching
-d – specifies the delimiter
-f – sets the field to be printed
4. Which Command
which command is a tiny and straightforward utility for locating the binary of a command; it outputs the absolute path of a command. For example:
$ which find $ which locate $ which which
5. Whereis Command
whereis command is also used to locate a command and it additionally shows the absolute path of the source, and manual page files for the command.
$ whereis find $ whereis locate $ whereis which $ whereis whereis