Bash: execute ‘svn rm’ em todos os arquivos excluídos

Quando você usa rmpara excluir um monte de arquivos em um repositório Subversion e executa svn status, obtém um monte de linhas como esta:

!       path/to/file.cc
! path/to/file.cc
! path/to/file.cc

Se você tentar fazer um commit neste estado, as exclusões não serão realmente realizadas – você terá que executar svn rmtodos esses arquivos. Mas por que fazer isso manualmente para cada arquivo? Basta usar isto:

svn status | grep ! | awk '{print $2}' | while read line ; do svn rm $line; done

Quando você executa o just svn status | grep ! | awk '{print $2}', obtém uma lista de todos os nomes de arquivo que foram excluídos do disco, mas não removidos do repo. A última parte apenas itera sobre todos os arquivos e é executada svn rmneles.