Primeiro, você usaria o comando find
no terminal.
find . -type f -name "*.what"
Isso listará todos os arquivos no sistema a partir do diretório atual "." correspondência "tipo: arquivo" e nome "* .que".
Então você pode incorporar isso em um script bash, assim:
Editar
Aqui você vai, isso faz o que você quer, eu acho.
#!/bin/bash
src=${1:-"."}
ext=${2:-"what"}
for dir in 'find ${src} -type f -name "*.${ext}"'; do
dir='echo ${dir} | awk 'BEGIN{FS=OFS="/"}{$NF=""}{print}''
echo ${dir} "has" 'ls -l ${dir} | awk '!NR=1 && !/^d/ && !/*.what/ {print $NF}' | wc -l' "file(s)"
done
Isso gerará o número de arquivos em qualquer diretório que contenha * .what (recursivamente). O número se os arquivos excluírem os diretórios !/^d/
e o arquivo * .what !/*.what/
.
Isso deve levar você até lá. Funciona no meu sistema, pelo menos, supondo que eu entendi a pergunta.