#From: "Grigoriy Strokin" #Newsgroups: comp.unix.shell #Subject: fast basename and dirname functions for BASH/SH #Date: Sat, 27 Dec 1997 21:18:40 +0300 # #Please send your comments to grg@philol.msu.ru function basename() { local name="${1##*/}" echo "${name%$2}" } function dirname() { local dir="${1%${1##*/}}" [ "${dir:=./}" != "/" ] && dir="${dir%?}" echo "$dir" } # Two additional functions: # 1) namename prints the basename without extension # 2) ext prints extension of a file, including "." function namename() { local name=${1##*/} local name0="${name%.*}" echo "${name0:-$name}" } function ext() { local name=${1##*/} local name0="${name%.*}" local ext=${name0:+${name#$name0}} echo "${ext:-.}" }