find . -type f | grep -i '[^a-z0-9\.\/_\-]'
Isso corresponderia a todos os arquivos que contêm um caractere diferente de a-z , 0-9 , um ponto, uma barra (para diretórios), um sublinhado ou um hífen-menos.
Observação: Isso não funcionará se um arquivo (ou caminho) contiver uma nova linha, porque o encadeamento para grep dividiria o caminho do arquivo em dois. Embora não seja muito comum, deve ser mencionado.
Uma solução simples com o Zsh (requer setopt EXTENDED_GLOB ):
ls -l **/*[^a-zA-Z0-9-_.]##*
O ** recursa nos diretórios e * corresponde a zero ou mais ocorrências de qualquer caractere. O padrão negado de caracteres na lista de permissões precisa ser correspondido pelo menos uma vez ( ## ).