Para arquivos, você pode querer mudar um pouco sua linha de comando para a linha de comando sugerida na página git-rm
git ls-files -z | xargs -0 rm -f
Isso é muito mais seguro com caminhos de arquivo mais complexos. Para diretórios, você pode tentar uma estratégia semelhante:
git ls-tree --name-only -d -r -z HEAD | sort -rz | xargs -0 rmdir
No entanto, depende de como você gostaria de tratar os diretórios que contêm arquivos (geralmente gitignored) que não são controlados. A linha de comando acima deve deixar esses arquivos e seus diretórios.
Mas seria fácil mudar isso para excluir o diretório, seja qual for o conteúdo.