Caros colegas Acabei esbarrando em um comando que fez o serviço de forma perfeita:
mcp '~/pacientes/*/* */white.bmp' '~/saida/octave/#1-#2-#3-white.bmp' mcp '~/pacientes/*/* */fringes.bmp' '~/saida/octave/#1-#2-#3-fringes.bmp' Como não sei se esse comando 'viola' os termos desta lista (usar outras linguagens), então aproveito ainda para fazer uma pergunta mais genérica, em termos de boa-prática em shell: "qual é a conduta recomendável, em termos de pipe/redirecionamento, para localizar um arquivo em determinada estrutura de diretórios/filenames, passá-lo por diversos comandos, e depois salvá-lo (na verdade uma cópia) em outro local, com outro nome, já devidamente processado?" Esta não é uma pergunta para ser respondida de forma pronta e completa, acho eu (tomara que possa ser!), mas ao ser confrontado com meu problema atual, me parecem ser possíveis diversas alternativas, e vejo que algumas geralmente são desestimuladas por alguns, preferidas por outros... Vejamos, TAREFA: - localizar arquivos de imagem dentro de uma árvore, com determinado nome; - passá-los por batch processing no imagemagick (rotacionar, ajustar histograma, recortar, etc); - renomeá-los de acordo com a estrutura de diretório de onde provieram; - salvá-los, processados e renomeados, em uma saída; - opcionalmente, "limpar" os rastros deixados pelos passos anteriores do script (pastas e arquivos criados). Abordagens possíveis: - usar muitos loops aninhados; - usar find -exec; - usar find + piping; - usar find >argumentos.txt, e apontar o argumentos.txt como lista de argumentos para outros comandos (talvez sendo antes processado pelo sed); - declarar variáveis no início e durante o script, e usar essas variáveis em substituições no meio dos comandos; - etc, etc, etc. Uma questão de boa-prática que me 'aflige' em especial é se seria 'errado', por exemplo: primeiro mover tudos os arquivos com um comando, depois processar todos os arquivos com outro, depois renomear com outro, tipo, um comando por linha, que iria ficar gravando e regravando um monte de arquivos em um monte de pastas, e ao final poderia (ou não) limpar seus rastros; OU Se é considerado universalmente melhor, sempre que possível e até a morte, dar um monte de pipes, processando as informações dentro do comando, sem gravar arquivo nenhum exceto a saída final. Já imagino que a preferência e experiência pessoal é o que vai decidir se é melhor um ou outro, mas como estou aprendendo (sempre estamos), acho importante se acostumar desde o início em planejar da melhor forma os scripts, evitando vícios e ineficiências - principalmente por saber identificá-los. Grato pela atenção Helton [As partes desta mensagem que não continham texto foram removidas]
