No BASH, você pode usar a barra final (acho que ele deve funcionar em qualquer shell POSIX):
rm -R -- */
Observe o --
que separa opções de argumentos e permite remover entradas iniciando com um hífen - caso contrário, após a expansão pelo shell, o nome da entrada seria interpretado como uma opção por rm
(o mesmo vale para muitos outros utilitários de linha de comando).
Adicione a opção -f
se você não quiser ser solicitado a confirmar ao excluir arquivos não graváveis.
Observe que, por padrão, os diretórios ocultos (aqueles cujo nome começa com .
) serão deixados em paz.
Uma ressalva importante: a expansão de */
também incluirá links simbólicos que eventualmente serão resolvidos para arquivos do tipo diretório . E dependendo da implementação de rm
, rm -R -- thelink/
irá simplesmente deletar o symlink, ou (na maioria deles) deletará o conteúdo do diretório vinculado de forma recursiva, mas não o próprio diretório nem o symlink.
Se estiver usando zsh
, uma abordagem melhor seria usar um glob qualifier para selecionar apenas arquivos do tipo diretório:
rm -R -- *(/) # or *(D/) to include hidden ones
ou:
rm -R -- *(-/)
para incluir links simbólicos para diretórios (mas porque, desta vez, a expansão não possui /
s, é apenas o link simbólico que é removido com todas as implementações rm
).
Com bash
, AT & T ksh
, yash
ou zsh
você pode fazer:
set -- */
rm -R -- "${@%/}"
para remover o /
.