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

Re: Substituir um texto em muitos arquivos - sed



Em 26/03/07, Junior Polegato - Linux<linux@juniorpolegato.com.br> escreveu:
henrique escreveu:
> tem que ser usando o sed ? se fosse usando o perl eu usaria :
> perl -i.back -pe "s/textoantigo/textonovo/g" *
> Em Segunda 26 Março 2007 15:54, Davi escreveu:
>
>> Há algum tempo atrás, na lista, alguém precisou substituir um mesmo texto
>> em vários arquivos de uma vez e foi sugerido o uso do sed...
>> Eu sei que foi algo recente (esse ano, para ser exato), mas procurei nos
>> arquivos e não achei...
>> Se alguém ainda tiver arquivada a solução e puder me encaminhar, eu
>> agradeço!! =]
>>

Olá,

  E com sed não mudaria muito, mas o código ficaria um pouco mais
interativo e de alto-nível (em termos de linguagem):

for ARQ in *; do echo $ARQ; mv "$ARQ" "$ARQ.bak"; sed
"s/textoantigo/textonovo/g" "$ARQ.bak" > "$ARQ"; done

ou ainda, usando o find com a opção -exec, podemos pegar uma árvore de
diretórios:

find . -type f -exec bash -c 'echo "{}"; mv "{}" "{}.bak"; sed
"s/textoantigo/textonovo/g" "{}.bak" > "{}"' \;

--
Atenciosamente,

           Junior Polegato



Junior, você não precisa mover os arquivos para um .bak e depois mover
de volta para o original. A opção "-i" do sed faz isso por você. Se
for fornecido um sufixo, essa opção ainda cria backup dos arquivos
originais. Veja o manual do sed para mais detalhes.

--
Krishnamurti Lelis Lima Vieira Nunes



Reply to: