Opa! Agradeço ao Lawrence e ao Marcio Gil, aparentemente uma das duas, ou AS duas respostas, resolverão minha dúvida. Vi as mensagens agora e estou de saída, mas hoje ou amanhã vou dar uma furungada pra ver o que eu consigo extrair.
Mais importante que isso, vou tratar de "dissecar" as respostas para entender os conceitos utilizados, e exatamente que parte de cada expressão faz o quê. Ou seja, provavelmente mais perguntas virão ;oP Obrigado pelas respostas, quando eu conseguir o resultado final, eu posto aqui. Helton Moraes Em 17 de abril de 2010 18:08, Lawrence Waclawiak <[email protected]>escreveu: > > > 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]<shell-script%40yahoogrupos.com.br> > > <mailto:shell-script%40yahoogrupos.com.br<shell-script%2540yahoogrupos.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]<shell-script%40yahoogrupos.com.br> > > <mailto:shell-script%40yahoogrupos.com.br<shell-script%2540yahoogrupos.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] > > > > > > > > > > [As partes desta mensagem que não continham texto foram removidas]
