*
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.