Extract directory from path [duplicate]

In my script I need the directory of the file I am working with. For example, the file="stuff/backup/file.zip". I need a way to get the string "stuff/backup/" from the variable $file.

3

5 Answers

dirname $file 

is what you are looking for

4
dirname $file 

will output

stuff/backup 

which is the opposite of basename:

basename $file 

would output

file.zip 
4

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.zip directory=${1%/*} # /stuff/backup 

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

2

For getting directorypath from the filepath:

file="stuff/backup/file.zip" dirPath=${file%/*}/ echo ${dirPath} 
0

Simply use $ dirname /home/~username/stuff/backup/file.zip

It will return /home/~username/stuff/backup/

You Might Also Like