Более простой, хотя и менее изящный способ итерации подкаталогов:
base="/something"
iterator() {
local dir="$1"
local i=
for i in "$dir"/*; do
if [[ -d "$i" ]]; then
iterator "$dir/$i"
else
# do something with this file
fi
done
}
iterator "$base"