foo is cleardir function deepdir { for i in * ;do ( [ -d "$i" ] && cd "$i" ; [ -f "$i" ] && "pwd" && break; deepdir );done } function cleardir { deepdir | sort | uniq }