How to extract directory path from file path?

dirname and basename are the tools you’re looking for for extracting path components:

$ VAR='/home/pax/file.c'
$ DIR="$(dirname "${VAR}")" ; FILE="$(basename "${VAR}")"
$ echo "[${DIR}] [${FILE}]"
[/home/pax] [file.c]

They’re not internal bash commands but they are part of the POSIX standard – see dirname and basename. Hence, they’re probably available on, or can be obtained for, most platforms that are capable of running bash.

Leave a Comment