Sua tentativa de parêntese não tinha espaços ao redor deles, então find viu uma opção chamada (-name e não sabia o que fazer com ela. Em vez disso, adicione espaços ao redor dos parênteses como:
find . \( -name "*.xml" -o -name "*.ipm" \) -type f -exec rm -iv {} \;
Além disso, se você tiver o GNU find , poderá usar -delete em vez do -exec rm -iv {} \;
Como Wildcard observou, como estamos fazendo um comando que pode receber uma lista de argumentos, podemos salvar alguns processos (talvez muito dependendo da frequência com que eles coincidem) usando + para finalizar -exec em vez de% código%. Com \; , o + coletará os caminhos em conjuntos e os aplicará com uma única chamada do aplicativo (aqui -exec ) em vez de chamar o aplicativo uma vez para cada caminho. Então, se você não tem ou não quer usar rm , a solução mais eficiente é fazê-lo como:
find . \( -name "*.xml" -o -name "*.ipm" \) -type f -exec rm -iv {} +