
Estou usando o macOS X, inserindo isso no terminal para renomear algumas coisas:
find /Users/Ad//Desktop/Project/src/ -type f -name '*.java' -exec perl -pi -w -e 's/getGreenObject()/newObject("green")/g;' {} \;
Que deve renomear tudo:
getGreenObject()
com
newObject("green")
mas o que fez foi substituir getGreenObject() por isto:
newObject("green")()
o que resultou em toneladas de erros. Parece que o comando não reconhece "()" os colchetes de abertura e fechamento?
Como posso corrigir todos esses erros agora com o mesmo comando?
Responder1
Os parênteses estão sendo tratados como parte da sintaxe da expressão regular (eles indicam que seu conteúdo deve ser tratado como um grupo) em vez de caracteres literais a serem correspondidos. Para instruir o analisador de expressões regulares a tratá-los como caracteres literais, você pode escapá-los com barras invertidas:
find /Users/Ad//Desktop/Project/src/ -type f -name '*.java' -exec perl -pi -w -e 's/getGreenObject\(\)/newObject("green")/g;' {} \;
Agora: você tem um backup de antes de isso acontecer, para poder voltar e tentar novamente? Ao fazer qualquer alteração em massa como essa, você deve sempre certificar-se de que seu backup esteja atualizado (você tem um backup, certo?) E também executar um pequeno teste antes de soltá-lo em sua base de código principal.
Se você não tiver um backup para voltar, provavelmente poderá corrigi-lo assim:
find /Users/Ad//Desktop/Project/src/ -type f -name '*.java' -exec perl -pi -w -e 's/newObject\("green"\)\(\)/newObject("green")/g;' {} \;
Observe que eu disse provavelmente. As mesmas recomendações se aplicam aqui: primeiro certifique-se de ter um backup atualizado e teste-o primeiro em alguns arquivos. Eu sounãoresponsável se isso destruir irreversivelmente sua base de código.