[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Alterando conteudo de arquivos em massa
From: |
Tiago Barcellos Peczenyj |
Subject: |
Re: [shell-script] Alterando conteudo de arquivos em massa |
Date: |
Mon, 14 Jan 2008 10:01:33 -0200 |
William
Apesar do seu one-liner funcionar sem problemas, vc vai chamar o sed tantas
vezes quantas houverem arquivos.
Se vc passar a lista de arquivo na lista de parâmetros vc terá uma imensa
velocidade.
sed -i 's/internetExplorer/Firefox/g' *
ou, com xargs
ls | xargs sed -i 's/internetExplorer/Firefox/g'
uma terceira alternativa é imprimir o nome dos arquivos que tem a string que
vc quer via um grep (favor checar as opções)
grep -HF 'internetExplorer' * | xargs sed -i 's/internetExplorer/Firefox/g'
E, se os arquivos forem muito grandes, use
sed -i '/internetExplorer/s//Firefox/g' # pelo menos no gsed da mais
performance.
Não sei de quantos arquivos estamos lidando nesse caso ou em outros
parecidos, mas vale a pensa pensar nesses detalhes, do contrario a edição
scriptada pode demorar tanto que chega a ser proibitiva (principalmente se
não temos ideia de quanto ja foi editado).
On 1/14/08, William José Vicente <address@hidden> wrote:
>
> Ráyner,
>
> pode não ser a melhor forma, mas eu faria um for para cada arquivo
> desejado e usaria o sed para a substituição. Seria mais ou menos assim:
>
> for arq in *; do sed 's/internetExplorer/Fiferox/g' $arq; done
>
> No lugar do * você pode trocar por uma lista de arquivos ou um `cat
> arquivo` para obter esta lista.
>
> Abraços,
>
> William
>
> Em 14/01/08, Ráyner <address@hidden <raynercl%40yahoo.com.br>>
> escreveu:
> >
> > Há alguma maneira de se alterar o conteúdo dos
> > arquivos em grande escala? O que eu quero na verdade e
> > entrar em vários arquivos e substituindo uma palavra
> > por outra.
> >
> > Tipo:
> >
> > ls | cat |ed s/internetExplorer/Fiferox/ g
> > #isso não da certo
> >
> > Já tentei alguns comandos mas nenhum da certo.
> >
> > Obrigado
> >
> > Ráyner Carvalho
> > (61) 9137-6842
> >
> > Abra sua conta no Yahoo! Mail, o único sem limite de espaço para
> > armazenamento!
> > http://br.mail.yahoo.com/
> >
> >
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>
--
Tiago B Peczenyj
Linux User #405772
http://peczenyj.blogspot.com/
"what does not kill us makes us stronger"
[As partes desta mensagem que não continham texto foram removidas]