Files and directories are building blocks of an operating system. As Linux users, we perform a variety of operations on the files and directories. One such operation is finding a full path of a file. The full path of a file is also known as its absolute or canonical path.
In this tutorial, we’ll discuss various ways to find the full path of a file.
Let’s create files and directories structure to use as an example:
$ cd /tmp $ mkdir -p dir1/dir2/dir3/dir4/dir5 $ touch dir1/dir2/file2.txt $ touch dir1/dir2/dir3/dir4/file4.txt $ touch dir1/dir2/dir3/dir4/dir5/file5.txt $ tree /tmp/dir1/ /tmp/dir1/ └── dir2 ├── dir3 │ └── dir4 │ ├── dir5 │ │ └── file5.txt │ └── file4.txt └── file2.txt 4 directories, 3 files
3. Using the readlink Command
The readlink command prints canonical file names. We can use the -f option of this command to find the full path of a file:
$ cd /tmp/dir1/dir2/dir3/dir4/dir5/ $ readlink -f file5.txt /tmp/dir1/dir2/dir3/dir4/dir5/file5.txt
4. Using the realpath Command
Alternatively, we can use the realpath command to get the absolute path of a file:
$ cd /tmp/dir1/dir2/dir3/dir4/ $ realpath file4.txt /tmp/dir1/dir2/dir3/dir4/file4.txt
5. Using the Combination of basename and dirname Commands
$ basename /tmp/dir1/dir2/dir3/dir4/file4.txt file4.txt $ dirname /tmp/dir1/dir2/dir3/dir4/file4.txt /tmp/dir1/dir2/dir3/dir4
We can use the combination of these two commands to find the full path of a file. Let’s create a simple shell script for the same:
$ cat get_full_path.sh #! /bin/bash echo "$(cd "$(dirname "$1")" && pwd -P)/$(basename "$1")" $ chmod +x get_full_path.sh $ ./get_full_path.sh file4.txt /tmp/dir1/dir2/dir3/dir4/file4.txt
Firstly, we use the dirname command to find the directory in which a file is located. Then we change the directory using the cd command.
Next, we print the current working directory using the pwd command. Here, we have applied the -P option to show the physical location instead of the symbolic link.
Finally, we use the basename command to print the file name without a directory.
6. Using the find Command
The find command searches for files in a directory hierarchy. We can use this command to print the absolute path of a file:
$ cd /tmp/dir1/ $ find $PWD -type f -name file4.txt /tmp/dir1/dir2/dir3/dir4/file4.txt
In this article, we discussed various practical examples to find the absolute path of a file. First, we discussed the usage of the readlink and realpath commands. Then, we used a combination of the basename and dirname commands. Finally, we saw the example of the find command. We can use these commands in day-to-day life to boost our productivity.