#!/bin/sh while read -r line; do if [ "$paths" ]; then paths="$paths $line" else paths="$line" fi done dirs="$paths" while [ "$dirs" != '.' ]; do [ "$dirs" ] && paths="$paths $dirs" dirs="$(echo "$dirs" | tr '\n' '\0' | xargs -0 dirname | awk '!a[$0]++')" done echo "$paths" | awk '!a[$0]++' | grep -v '^\.$'