Left to Right # check for leading slash NAME=/usr/lib/sux_1.0.1-3.2.tar.gz ; [[ ${NAME%%/*} = "" ]] && echo "Have leading slash" Have leading slash # strip_leading_slashes (or just: ${NAME#/} ) NAME=/usr/lib/sux_1.0.1-3.2.tar.gz ; echo ${NAME#/*} usr/lib/sux_1.0.1-3.2.tar.gz # right_of_first_period NAME=/usr/lib/sux_1.0.1-3.2.tar.gz ; echo ${NAME#*.} 0.1-3.2.tar.gz # right_of_first_slash NAME=/usr/lib/sux_1.0.1-3.2.tar.gz ; echo ${NAME#*/} usr/lib/sux_1.0.1-3.2.tar.gz # left_of_first_period NAME=usr/lib/sux_1.0.1-3.2.tar.gz ; echo ${NAME%%.*} usr/lib/sux_1 # left_of_first_slash NAME=/usr/lib/sux_1.0.1-3.2.tar.gz ; echo ${NAME%%/*} (returns null) NAME=usr/lib/sux_1.0.1-3.2.tar.gz ; echo ${NAME%%/*} usr Right to Left # check for trailing slash bash-3.1# NAME=/usr/lib/sux_1.0.1-3.2.tar.gz ; [[ ${NAME##*/} = "" ]] && echo "Have trainling slash" bash-3.1# NAME=/usr/lib/sux_1.0.1-3.2.tar.gz/ ; [[ ${NAME##*/} = "" ]] && echo "Have trainling slash" Have trainling slash # strip_trailing_slashes NAME=/usr/lib/ ; echo ${NAME%/} /usr/lib # right_of_last_period NAME=/usr/lib/sux_1.0.1-3.2.tar.gz ; echo ${NAME##*.} gz # left_of_last_period NAME=/usr/lib/sux_1.0.1-3.2.tar.gz ; echo ${NAME%.*} /usr/lib/sux_1.0.1-3.2.tar # right_of_last_slash NAME=/usr/lib/sux_1.0.1-3.2.tar.gz ; echo ${NAME##*/} sux_1.0.1-3.2.tar.gz # left_of_last_slash NAME=/usr/lib/sux_1.0.1-3.2.tar.gz ; echo ${NAME%/*} /usr/lib