Como eu tenho certeza que você sabe, um diretório é um tipo especial de arquivo no paradigma do UNIX. Para determinar se algo é um diretório ou outro tipo de arquivo, ele deve ser interrogado e fstat () é uma boa maneira de fazer isso.
Acredito que sistemas de arquivos e fs-drivers posteriores mantenham uma tabela separada apenas dos diretórios, mas o comando find data há décadas e provavelmente não está adaptado a sistemas de arquivos mais novos ou mantém a compatibilidade com versões anteriores.
Você pode fingir executando um trabalho recorrente a partir do CRON (com um bom valor > 0 se quiser ser fácil na utilização do IO para outros processos) que faz um:
find ${DIRECTORY} -type d -print >${DIRECTORY}/.only_folders
Então, quando você precisar disso, use o conteúdo do arquivo que você pré-construiu, em vez de percorrer o diretório novamente.
cat "${DIRECTORY}/.only_folders" |while read FOLDER ; do
do_work.sh ${FOLDER} ;
done
em vez de algo como
find ${DIRECTORY} -type d |xargs do_work.sh