DEST_DIR=/usr/share GREP=grep file_exists_exact1() { [ -n "$1" ] || err 3 "USAGE: file_exists_exact path" _path="${1#.}" [ -h "${DEST_DIR}${_path}" ] || \ [ -e "${DEST_DIR}${_path}" ] || return 1 while [ "${_path}" != "/" ] ; do _dirname="$(dirname "${_path}" 2>/dev/null)" _basename="$(basename "${_path}" 2>/dev/null)" ls -fa "${DEST_DIR}${_dirname}" 2> /dev/null \ | ${GREP} -F -x "${_basename}" >/dev/null \ || return 1 _path="${_dirname}" done return 0 } file_exists_exact2() { [ -n "$1" ] || err 3 "USAGE: file_exists_exact path" _path="${1#.}" [ -h "${DEST_DIR}${_path}" ] || \ [ -e "${DEST_DIR}${_path}" ] || return 1 while [ "${_path}" != "/" ] ; do _dirname=${_path%/*} _basename=${_path##*/} test -n "$_dirname" || _dirname=/ ( cd "${DEST_DIR}${_dirname}" for _entry in .* *; do case ${_entry} in "${_basename}") return 0;; esac done return 1 ) || return 1 _path="${_dirname}" done return 0 } DEST_DIR="$2" if file_exists_exact$1 "$3" ; then echo "$3" exists in "$2" fi .