Версия, которая избегает создания подпроцесса:
for D in *; do
if [ -d "${D}" ]; then
echo "${D}" # your processing here
fi
done
Или, если ваше действие - одна команда, это более кратко:
for D in *; do [ -d "${D}" ] && my_command; done
Или еще болеекраткая версия ( спасибо @ enzotib ).Обратите внимание, что в этой версии каждое значение D
будет иметь косую черту:
for D in */; do my_command; done