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.
In this article, we will review 5 command line tools to find, locate and search files quickly on Linux systems.
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 heirarchy) 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.
It supports multiple options to locate files using attributes such as permissions, users, groups, file type, date, size and other possible criteria. You can learn some useful find command usage examples in the following articles:
- 35 Practical Examples of Linux Find Command
- Ways to Use ‘find’ Command to Search Directories More Efficiently
- How to Find Files With SUID and SGID Permissions in Linux
- How to Use ‘find’ Command to Search for Multiple Filenames (Extensions) in Linux
- How to Find and Sort Files Based on Modification Date and Time in Linux
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 locate will not report files created after the most recent update of the relevant database.
Read Also: How to Install ‘locate Command’ to Find Files in Linux
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 delimter-f
– sets the field to be printed
You can learn some useful grep command usage examples in the following articles:
- 12 Practical Examples of Linux Grep Command
- 11 Advance Linux Grep Commands Usage and Examples
- How to Find a Specific String or Word in Files and Directories
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
Read Also: 5 Ways to Find a ‘Binary Command’ Description and Location on File System
That’s all for now! If we have missed any Commandline tools/utilities for quickly locating files on a Linux system, let us know via the comment form below. You can ask any questions concerning this topic as well.
Why are you piping cut when you could have used
"-l"
or –-files-with-matches
directly and avoid using a second command.@Kryztoval
Ok, many thanks for the head up.
If you are using bash you should use the built-in type instead of the external which.
@Andrew
True, good addition, many thanks.
`which` is great, however, I’ve found that it can lull its users into a false sense of security – the results of `which` aren’t necessarily going to be the executable that handles your call.
If you want to know for certain what’s running when you type `foo` at the command line, here are a few additional commands to keep in mind:
@Gray
Oh, this is good, many thanks for sharing this useful tip.