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], 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] > 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] >
