* corresponde a todos os arquivos não pontuais, .[!.]* corresponde a todos os arquivos de ponto, exceto . , e arquivos cujo nome começa com .. e ..?* corresponde a todos os arquivos ponto-ponto, exceto .. . Juntos, eles correspondem a todos os arquivos, exceto . e .. . Se algum desses três padrões não corresponder a nada, ele se expandirá para si mesmo; rm -f não se importa com argumentos inexistentes, então isso não importa.
rm -rf ..?* .[!.]* *
Você também pode usar find . Isso é mais complexo, mas tem a vantagem de funcionar mesmo se houver tantos arquivos que os curingas acima se expandirão além do limite de comprimento da linha de comando do sistema.
find . -name . -o -prune -exec rm -rf -- {} +
Você pode achar mais claro remover e recriar o diretório. Isso tem a vantagem (ou desvantagem, conforme o caso) de resultar em um diretório vazio, mesmo que outro programa esteja criando arquivos no diretório original.