# CD (back) to directory. # Usage: cdd cdd() { local target="${1}" local array local result IFS='/' read -r -a array <<< "${PWD}" array=("${array[@]:1}") # Make search case-insensitive. shopt -s nocasematch # Find desired dir. # for dir in "${array[@]}"; do # result="${result}/${dir}" # [[ "${dir}" =~ "${target}" ]] && break # done local found=1 for (( idx=${#array[@]}-2 ; idx>=0 ; idx-- )); do dir="${array[idx]}" [[ "${dir}" =~ "${target}" ]] && found=0 [[ ${found} = 0 ]] && result="/${dir}${result}" done # Clean-up??? shopt -u nocasematch # Go there! if [[ "${result}" != "" ]]; then echo "${result}" cd "${result}" else return 1 fi }