#!/bin/bash #trap 'read;clear;echo "depth=$depth, parent=\"${parent[*]}\", item=$item"' DEBUG #set -T depth=0 declare -a parent function node { local item ((depth++)) pushd "$1" >/dev/null parent[depth]=$1 for item in * do ( IFS=/ ; printf -- "%s/%s\n" "${parent[*]}" "$item" ) [ -d "$item" -a ! -h "$item" ] && node "$item" done unset 'parent[depth]' popd >/dev/null ((depth--)) } shopt -s nullglob echo "$1" node "$1"