[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: substituir texto em vários arquivos



On Wed, 27 Feb 2002 15:21:51 -0300
Pablo Lorenzzoni <spectra@debian.org> wrote:

> Olah!
> 
> 	bash$ cat arquivo_fonte | sed 's/era_isso/virou_isso/g' > 
> arquivo_destino
sim... só que tem de fazer isso arquivo por arquivo... eu fiz um pequeno
script que automatiza iss (vivo precisando disso e resolvi automatizar =P):

---------------------------------------------------
[kov]@[couve] $ cat scripts/change-all.sh
#!/bin/sh

for i in *; do
    cat "$i" | sed s/"$1"/"$2"/g > "$i.new"
    cp "$i"{,.old}
    mv "$i"{.new,}
done
---------------------------------------------------

usa assim: entra num diretório e faz:

change-all.sh 'koko' 'kovkov'

ele vai substituir toda palavra 'koko' por 'kovkov' e vai salvar os
arquivos anteriores em arquivo.old para o caso de algo sair errado
e você querer voltar =P

dá pra dar uma melhorada nesse script, mas ainda não tive necessidade
nem vontade (por exemplo, ele vai tentar dar cat nos diretórios que
achar pelo caminho e não vai processar diretórios recursivamente...
dá pra fazer em 2 minutos se precisar)

[]s!

-- 
kov@debian.org: Gustavo Noronha <http://www.metainfo.org/kov>
Debian: <http://www.debian.org> * <http://debian-br.cipsga.org.br>



Reply to: