Extract directory from path [duplicate] Extract directory from path [duplicate] bash bash

Extract directory from path [duplicate]


dirname $file

is what you are looking for


dirname $file

will output

stuff/backup

which is the opposite of basename:

basename $file

would output

file.zip


Using ${file%/*} like suggested by Urvin/LuFFy is technically better since you won't rely on an external command. To get the basename in the same way you could do ${file##*/}. It's unnecessary to use an external command unless you need to.

file="/stuff/backup/file.zip"filename=${1##*/}     # file.zipdirectory=${1%/*}     # /stuff/backup

It would also be fully POSIX compliant this way. Hope it helps! :-)