Junior Polegato - Linux escreveu:
Krishnamurti L. L. V. Nunes escreveu:Em 26/03/07, Junior Polegato - Linux<linux@juniorpolegato.com.br> escreveu:Eu sei disso, mas um homem prevenido vale por dois! ;-) Imagine se algo sai errado, tipo um texto em que alguns lugares colocaram "carro" e deveria ser "moto" e nos outros lugares tem "moto" corretamente. Daí você muda tudo o que for "carro" para "moto" e ao repassar o texto percebe que era só um ou outro "carro" que deveria ser "moto", como volta para o que tinha antes? :'( Um homem prevenido vale por dois! ;-)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" > "{}"' \;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.
Ops,Só complementando, isso que eu disse é para o caso de esquecer o sufixo na opção -i.
Também vale frisar que a opção -i veio a partir da versão 4.0, se não me engano, mas tenho certeza que na versão 3.02.80, a qual tenho em alguns servidores, essa opção não é reconhecida. Quem sabe agora eu consiga passar todos para o Etch eu deixe de vez essas velharias! :-P
Abraços. -- Atenciosamente, Junior Polegato Um peregrino de problemas; Um pergaminho de soluções! Página Profissional: http://www.juniorpolegato.com.br