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 ( ##
).