How to get the last part of dirname in Bash
Suppose I have a file /from/here/to/there.txt
, and want to get only the last part of its dirname to
instead of /from/here/to
, what should I do?
You can use basename
even though it's not a file. Strip off the file name using dirname
, then use basename
to get the last element of the string:
dir="/from/here/to/there.txt"
dir="$(dirname $dir)" # Returns "/from/here/to"
dir="$(basename $dir)" # Returns just "to"
The opposite of dirname
is basename
:
basename "$(dirname "/from/here/to/there.txt")"
Using bash
string functions:
$ s="/from/here/to/there.txt"
$ s="${s%/*}" && echo "${s##*/}"
to