Renomear item de arquivo com colchetes

0

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;' {} \;

Qual deve renomear tudo:

getGreenObject()

com

newObject("green")

mas o que ele fez foi substituir getGreenObject () por isso:

newObject("green")()

que resultou em muitos erros. Parece que o comando não reconhece "()" os colchetes de fechamento e abertura?

Como posso corrigir todos esses erros agora com o mesmo comando?

    
por kay 28.03.2018 / 15:26

1 resposta

1

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) e não como caracteres literais a serem correspondidos. Para dizer ao analisador de expressões regulares para tratá-los como caracteres literais, você pode evitá-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 antes que isso acontecesse, então você pode voltar e tentar novamente? Ao fazer qualquer alteração em massa como essa, você deve sempre certificar-se de que seu backup está 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;' {} \;

Note que eu disse provavelmente. As mesmas recomendações se aplicam aqui: certifique-se de ter um backup atualizado primeiro e teste-o em alguns arquivos primeiro. Eu sou não responsável se isso destruir irreversivelmente sua base de código.

    
por 28.03.2018 / 18:39