Em 26/03/07, Junior Polegato - Linux<[EMAIL PROTECTED]> 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

