In Linux, you have multiple tools that can help you find the absolute path for files and directories in your system.
Today, you’ll learn about those tools from basic to advanced, including their pros and cons to help you easily distinguish between them and decide which one is right for a certain situation.
Tutorial Details
Description | Searching Files or Directories in Linux |
Difficulty Level | Moderate |
Root or Sudo Privileges | Yes |
OS Compatibility | Ubuntu, Manjaro, Fedora, etc. |
Prerequisites | which, whereis, locate, find |
Internet Required | Yes (for the locate command) |
Which Command: Locate a Program in the User’s Path
The which command is a basic tool to find the absolute path of executable commands or tools that can be executed from your terminal.
For example, if you want to find the absolute path of the ls command, specify it in the which command.
$ which ls
Output:
In some cases, the same binary file might exist in multiple locations, which you can search for using the “-a
” flag.
$ which -a ls
Output:
The following are pros and cons of this tool:
Pros | Cons |
---|---|
Useful for finding the absolute path for executable files or tools that can be executed from your terminal | Limited to executable files or tool searches |
Locate the path of binary files or tools that exist in multiple locations | Support only one “-a ” flag |
Consume less memory |
I personally prefer to use the “which” command only when I want to find the absolute path of the executable commands or tools that can be executed from the terminal because it cannot search for anything else, which makes the searching very fast.
I recommend you read our article on which command to learn more about.
Whereis Command: Locate the Binary, Source, and Manual Page Files for a Command
The whereis command is identical to the which command except it will also provide you the location of the binary, source, and manual page.
For example, use the following command to find the absolute path of binary, source, and manual page for the ls command.
$ whereis ls
Output:
The following command will only print the executable or binary file for the specified command.
$ whereis -b ls
Output:
If you want to search for the source file, use the following command.
$ whereis -s ls
Output:
Lastly, use the following command to print only the manual page files.
$ whereis -m ls
Output:
The following are pros and cons of this tool:
Pros | Coins |
---|---|
Useful for finding the binary, source, and manual page files for the specified command | Limited to certain searches |
You will experience the same searching speed as which command | Do not support files whose path is not assigned in the environmental file |
You can easily find the unusual files (referring to files with multiple manual pages) | |
Provides a flag to search in the specific directory that is not specified in the environmental file |
Whereis is one of those commands that I do not use regularly, means how many times you might be interested in knowing the location of binary, source, and manual page file paths for executable commands or tools. Yet it is a handy tool that can be used when required.
I recommend you read our article on whereis command to learn more about.
Locate Command: Find Filenames Quickly
The locate command is totally different from the previous two commands, it searches the specified files or folders within the indexes in the database file known as updatedb.
It will search at blazing speed because the database already has all the records, but you must also know that the updatedb database is set to automatically update after 24 hours using the cron jobs.
If you made any changes between this time frame, you may not find the files that you recently added or deleted file might still appear in the search result (it can be avoided using the flags) until the database is automatically or manually updated.
To use this tool, you can specify the file or directory name as an argument, and it will list all the results.
$ locate nginx
Output:
Use the following command to display the total number of matches instead of their names.
$ locate -c nginx
Output:
The following are pros and cons of this tool:
Pros | Cons |
---|---|
Search for all files and directories in super speed that are indexed in the database | Outdated databases might give you the wrong results |
Support for exact file matching, ignoring case-sensitivity, extensions, and type | It does not support searching for files based on their modification date, creation date, access time, and many more |
Consume less memory |
This tool is very helpful if you have a low-end PC. It will search for your specified files or directories at blazing speed without consuming too much system memory. However, if you perform a lot of file changes, it will become boring to update the database each time you make any changes.
I recommend you read our article on the locate command to learn more about it.
Find Command: Find Files or Directories Recursively Under the Specified Directory Tree
The find command is an advanced tool that is a little bit complex for beginners but that can help you find any files or directories in your system rigorously by going through each file or directory on every search.
Note that it does not use any databases to search for indexes, but instead walks through all files and directories in your file system on every search, consuming more system memory.
Now, if you want to search for specific files in your home directory, you can use the following command.
$ find /home/linuxtldr/ -name file.txt
Output:
Instead of file, if you want to search for directories, you can use the following command.
$ find /home/linuxtldr/ -name Downloads
Output:
Note that if the file with the same name specified for the directory exists in the specified path, it might also appear in the result; ignore that and specify the type using the “-type
” flag.
$ find -type d -name Downloads
Output:
The following are pros and cons of this tool:
Pros | Cons |
---|---|
An advanced searching tool that can recursively search for a specified file or directory in the file system tree | It will consume more system memory |
Support multiple search types like modification date, creation date, accessed type, size, permissions, and many more | |
Have everything that one searching tool must have |
For most of the time I use find command due to its nature and the features that it provides. It is a very helpful tool, and I must recommend everyone to at least have a basic understanding of this tool.
I recommend you read our article on the find command to learn more about it.
That was the end.
If you have any more tools that need to be added to this list, feel free to comment them down.
Join The Conversation
Users are always welcome to leave comments about the articles, whether they are questions, comments, constructive criticism, old information, or notices of typos. Please keep in mind that all comments are moderated according to our comment policy.