A abordagem compatível é informar find
para construir uma lista de arquivos e passá-la para rm
. Usando o newish (adicionado ao POSIX por volta de 2005, se a memória funcionar) -exec ... {} +
syntax tornará isso eficiente e seguro:
find . -name '*~' -exec rm -f {} +
Para o mais novo (4.x) bash, ou para a maioria dos lançamentos do zsh, você também pode dizer ao shell para fazer globalização recursiva:
shopt -s globstar # enable recursive globbing with ** on bash
rm -f **/*~