
Script para fazer replace
Script para Replace
Você nunca teve a necessidade de mudar o nome de uma classe algumas vez e pensou. Poxa esse nome vai ficar muito melhor, mas eu terei que modificar todos os arquivos e ai?
Existem 11 caminhos o fácil, o díficil e o lento:
- O Difícil é abrir cada arquivo na mão e modificar todas as ocorrências do nome no seu programa e se você utiliza alguma mecanismo de teste para o seu software você roda o teste e se quebrar você vai cosertando
senão você arrisca dizer que já modificou tudo
- O caminho fácil é você fazer um script que modifique todos os nomes a partir de uma pasta, mas se você não sabe fazer script o caminho torna-se difícil também
- Você pode usar alguma ferramenta como o Eclipse que realiza este trabalho para você. Mas ai você vai precisar de um computador potente para rodar esta tranqueira porque ele é feito em java (Nunca é demais sacanear java
) e se você for rodar isso no windows então se prepare para comprar um servidor
Então a proposta aqui é deixar o caminho fácil mais fácil ainda :), pois se eu ter entregar o script o empecilho se acaba
O Troço
O código do script é esse:
#!/bin/bash
for file in `ls $1`
do
if [ -f $1/$file ]
then
`sed "s/$2/$3/" "$1/$file" >> "/tmp/replace_tmp"`
`mv "/tmp/replace_tmp" "$1/$file" `
fi
if [ -d $1/$file ]
then
./$0 $1/$file $2 $3
fi
done
exit 0
Para utilizá-lo:
./replace raiz_onde_substituir 'nome_a_ser_substituido' 'novo_nome'
Para que você possa testar o script eu criei um tar (
clique aqui para baixá-lo) com uma pasta chamada testes que possui outras duas pastas dentro e alguns arquivos que possuem o nome 'Luis' neles.
Rode o comando
./replace testes 'Luis' 'Leandro'
O script substituirá todas as ocorrências do nome 'Luis' por 'Leandro' recursivamente.
Dicas
caso você queira substituir um nome que tenha '/' você deve escapar o caracter
Ex:
./replace testes '\/home\/luis' '\/home\/leandro'
- Warning
- Can't INCLUDE '', path is empty or contains illegal characters.