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 <[email protected]> escreveu: De: Helton Moraes <[email protected]> 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]
