Na verdade, ls [L]* (que é equivalente a ls L* ) lista os arquivos no diretório atual que não são diretórios e cujo nome começa com L e lista o conteúdo dos subdiretórios do diretório atual cujo nome começa com L . Para listar os arquivos no diretório atual que não são diretórios e cujo nome começa com L , você precisa passar a opção -d : ls -d L* .
Para corresponder arquivos cujo nome não comece com L , você pode usar o padrão glob [^L] (que também pode ser escrito [!L] , para compatibilidade com outros shells). [^L] corresponde a qualquer caractere diferente de L , portanto, [^L]* corresponde a nomes de arquivos que começam com qualquer caractere diferente de L . Como os nomes dos arquivos não podem estar vazios, [^L]* corresponde exatamente aos nomes dos arquivos que não começam com L .
Como alternativa, se a opção extended_glob estiver configurada (a maioria dos usuários coloca isso em .zshrc ), você pode usar o operador ^ para negar correspondências: ^L* corresponde aos nomes de arquivos que não correspondem a L* , ou seja, os nomes dos arquivos que não começam com L . Esta sintaxe é específica para zsh.