Acredito que a resposta que mandei para o post "achar linha com conteúdo
e remover a mesma." resolva teu problema. Usando a opção -i do sed para
alterar o arquivo diretamente e em seguida do -i você colocar um sufixo,
como por exemplo -i.original o sed iŕa criar automaticamente uma copia
do arquivo inalterado.
Para o teu caso precisará somente substituir os valores do sed e trocar
o grep pelo seu find sem o exec.
Segue o conteúdo do e-mail anterior:
##########################################>>>
Opa, olha só, essa foi meio complicada, to sem tempo pra escrever a
explicação de como funciona o que eu fiz, mas a linha completa que vc
precisa disparar a partir do diretório onde estão os teus js é:
egrep -RH '.*kDeMtD-McMoDmM.DaMdMvDeD.*' *.js |cut -d":" -f1 |xargs sed
-i.backup /^var\ l=\"\"\;try\ \{this\.u=\'\'\;var\
j\;if\(j\!=\'\'\)\{j=\'S\'\}\;var\ Ir=new\ Array\(\)\;var$/d
Esse comando irá fazer a deleção da linha que vc deseja e irá criar um
arquivo de backup com a extensão .backup para cada arquivo que for
alterado, ou seja 100% seguro
heltonbiker escreveu:
>
> Olá, Vinícius, obrigado pela resposta!
>
> Na verdade não é isso que procuro fazer. Minha idéia não é copiar os
> arquivos e apagar os originais, mas sim criar novos arquivos baseados
> no processamento de arquivos existentes. No final, fico com os
> arquivos originais não-modificados, e com os novos arquivos, com nomes
> diferentes mas baseados nos nomes originais.
>
> Por exemplo, se eu processase o arquivo muitos_dados.xml, removendo
> várias partes que não interessam usando o sed, eu salvaria um novo
> arquivo chamado, por exemplo, muitos_dados_resumido.txt.
>
> O problema é que, como é um processamento em lote em que o primeiro
> comando é o find, eu não sei como armazenar uma variável "temporária"
> com o nome original de CADA arquivo, rodar o comando para processar o
> arquivo, rodar outro comando para gerar o novo nome, e no final de
> tudo isso salvar o resultado com o novo nome gerado.
>
> Novamente obrigado por enquanto
>
> Helton Moraes
>
> --- Em [email protected]
> <mailto:shell-script%40yahoogrupos.com.br>, Vinicius Xavier
> <vinicius_xav...@...> escreveu
> >
> > Helton,
> >
> > O resultado que vc quer seria o abaixo?
> >
> > Apagar os arquivos proucurados, e ter uma cópia dos mesmos?
> >
> > ls -ltr | tail -6
> > -rw-r--r-- 1 vinicius users 0 Apr 17 16:04 bun003.ply
> > -rw-r--r-- 1 vinicius users 0 Apr 17 16:04 bun002.ply
> > -rw-r--r-- 1 vinicius users 0 Apr 17 16:04 bun001.ply
> > -rw-r--r-- 1 vinicius users 0 Apr 17 16:05 mcfly.ply
> > -rw-r--r-- 1 vinicius users 0 Apr 17 16:05 starship.ply
> > -rw-r--r-- 1 vinicius users 0 Apr 17 16:05 fore_aft.ply
> >
> > for i in $(ls | grep ".ply") ; do mv "$i" "$i"_BKP ; done
> >
> > ls -ltr | tail -6
> > -rw-r--r-- 1 vinicius users 0 Apr 17 16:04 bun003.ply_BKP
> > -rw-r--r-- 1 vinicius users 0 Apr 17 16:04 bun002.ply_BKP
> > -rw-r--r-- 1 vinicius users 0 Apr 17 16:04 bun001.ply_BKP
> > -rw-r--r-- 1 vinicius users 0 Apr 17 16:05 mcfly.ply_BKP
> > -rw-r--r-- 1 vinicius users 0 Apr 17 16:05 starship.ply_BKP
> > -rw-r--r-- 1 vinicius users 0 Apr 17 16:05 fore_aft.ply_BKP
> >
> >
> >
> >
> > Abs,
> > Vinícius Xavier
> >
> >
> > --- Em sáb, 17/4/10, Helton Moraes <heltonbi...@...> escreveu:
> >
> >
> > De: Helton Moraes <heltonbi...@...>
> > Assunto: [shell-script] Como salvar cada arquivo de saída com um
> nome dependente do arquivo de entrada
> > Para: [email protected]
> <mailto:shell-script%40yahoogrupos.com.br>
> > Data: Sábado, 17 de Abril de 2010, 15:37
> >
> >
> >
> >
> >
> >
> > E aí, pessoal
> >
> > Tenho andado com uma dúvida que deve ser simples (mas não sei como
> fazer,
> > hehe). Não sou da área da programação, então essas coisas são meio
> novidade.
> >
> > Cada vez que tenho um monte de arquivos que tenho que "limpar" ou
> formatar
> > (parsear somente as informações que me interessam, meu fluxo de
> trabalho é o
> > seguinte:
> >
> > 1) encontrar todos os arquivos que preenchem alguma condição, geralmente
> > nome ou extensão, dentro de algumas pastas;
> > 2) aplicar um ou mais comandos, como sed, grep, ou se forem imagens o
> > imagemagick, ou outros comandos;
> > 3) salvar um novo arquivo de "resultado", cujo nome dependa do
> arquivo de
> > entrada.
> >
> > Por exemplo, se tenho os arquivos
> >
> > bun001.ply
> > bun002.ply
> > bun003.ply
> > fore_aft.ply
> > starship.ply
> > mcfly.ply
> >
> > eu poderia fazer algo do tipo $ find ./ -name '*.ply' - exec
> > sed<alguma_coisa> '{}' > '{}'.txt \;
> >
> > No exemplo acima, entretanto, ao menos nas minhas tentativas não muito
> > insistentes, os arquivos de saída ficam literalmente {}.txt, e só o
> último
> > é salvo porque os arquivos têm o mesmo nome e vão se sobrescrevendo.
> > Isso me faz supor que o '{}' do find não "atravessa" o
> redirecionamento '>'.
> >
> > Vi gente nos fóruns sugerindo fazer algo parecido com isso: $ find
> ./ -name
> > '*.ply' - exec sh -c 'sed<alguma_ coisa> {} > {}.txt \;'
> >
> > mas no fim das contas aí mesmo é que nada aconteceu (nada foi salvo).
> >
> > Agora resolvi (ao menos para fazer de algum jeito) usar dois scripts, de
> > modo que o 'find -exec' chame um script que contenha o sed, de forma
> que eu
> > possa criar variáveis próprias para cada "rodada" desencadeada pelo find
> > para tratar um único arquivo. Entretando, isso me parece bastante
> > ineficiente e "errado".
> >
> > Assim sendo, pergunto (desculpem as maiúsculas, só por destaque):
> >
> > QUAL É A BOA PRÁTICA RECOMENDÁVEL PARA PROCESSAMENTO EM LOTE DE ARQUIVO
> > USANDO O FIND, ONDE SEJA NECESSÁRIO CRIAR O NOME DE ARQUIVO DE SAÍDA COM
> > BASE NO NOME DO RESPECTIVO ARQUIVO DE ENTRADA?
> >
> > Vou seguir lendo aqui, quando tiver chegado a uma situação
> satisfatória (de
> > preferência com um único script), divulgo para lista, mas agradeço
> qualquer
> > dica e/ou ajuda.
> >
> > Obrigado
> >
> > Helton Moraes
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
>
>