Em vez de analisar ls , você pode usar find :
find . -maxdepth 1 -type f ! -name ".*" | wc -l
Isso localizará todos os arquivos ( -type f ) no diretório atual ( . ), exceto aqueles que começam com a. ( ! -name ".*" ) e passa o resultado para wc para contar as linhas.
Para usá-lo como uma variável no seu script:
nfiles=$(find . -maxdepth 1 -type f ! -name ".*" | wc -l)