Como don_crissti declarou em um comentário, esta questão é uma duplicata e a resposta pode ser encontrada aqui . No entanto, você também deseja contar arquivos sem extensões. Esta é a minha chance:
echo no_ext $(find . -type f -exec sh -c 'echo $(basename "{}")' \; | grep -v '\.' | wc -l)
Vou tentar explicar os comandos subsequentes e o seu propósito.
Primeiro, usamos find para encontrar arquivos regulares e encaminhar seus respectivos caminhos por meio do comando basename de uma maneira bastante complicada.
find . -type f -exec sh -c 'echo $(basename "{}")' \;
Em segundo lugar, podemos simplesmente procurar por nomes de arquivos sem um período neles, usando grep no modo invertido.
grep -v
O último passo é contar o número de linhas.
wc -l
Isso pode ser alimentado no eco. Combinar tudo isso resulta no comando acima.
EDIT: Eu uso substituição de comando para concatenar um rótulo, neste caso 'no_ext' para o número computado. Você também pode executar o comando entre parênteses por si só sem o eco para imprimir apenas o número computado.