Sometimes you may need to extract the file name from a given path. For such use cases, Linux shells provide basename function, which strips directory and trailing suffix from given path values. In this article, we will learn how to use basename command in shell script.
What is Basename Command in Shell Script
There are couple of ways to use basename command in shell script.
basename NAME [SUFFIX] basename OPTION... NAME...
Basename command takes a path and prints the last part of it. It will also remove any trailing slashes. But it will retain file extensions. Here are some examples.
$ basename /home/data.txt data.txt $ basename /home/data/ data $ basename /home/data data
Using Multiple Inputs
If you want to get basename of multiple paths then you need to use -a or –multiple option followed by each path in a space-separated manner. Here is an example to get basename of /home/projects and /home/ubuntu/.
$ basename -a /home/ubuntu/ /home/projects ubuntu projects
Remove Trailing Suffix
You can also use basename command to remove trailing suffix from file path by mentioning it as second argument.
$ basename /home/data.txt .txt data
You may also use -s option and specify suffix before mentioning the file path.
$ basename -s .txt /home/data.txt
You can also use it in combination with -a option described above, to remove suffixes of multiple files.
$ basename -a -s .txt /home/data.txt /home/projects/data1.txt data data1
This technique is used to remove extensions from file names.
That’s it. In this short article, we have learnt what is basename and how to use it.