Isso é ruim: rm -r
não é para excluir arquivos, mas para excluir diretórios. Felizmente, provavelmente, não há diretórios correspondentes a *.o
.
O que você deseja é possível com zsh
, mas não com sh
ou bash
(novas versões do bash não podem fazer isso por padrão, mas se a opção globstar
do shell estiver ativada: shopt -s globstar
). O padrão de globbing é **/*.o
, mas isso não se limitaria a arquivos também (talvez zsh
também tenha truques para a exclusão de arquivos que não são arquivos).
Mas isso é um pouco para find
:
find . -type f -name '*.o' -delete
ou (como não tenho certeza se -delete
é POSIX)
find . -type f -name '*.o' -exec rm {} +