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 {} +