Caros; Retomando a tarefa depois das férias, e agora mais motivado ainda pelas zilhares de fotos tiradas :-)
Matutando sobre a questão, vi que não estava pegando a data da foto, mas sim do arquivo, que refletia o timestam de gravação no filesystem. Ainda bem que o comando 'cp' preservou as datas de criação no cartão de memória, mas não dá para confiar nisso ... Então descobri o programa 'exiftime', que lê o metadado da foto e revela a data em que ela foi tirada, assim fica mais fidedigno :-D usando o comando 'exiftime -td pessoal/Fotos/*.jpg' ele retorna o seguinte: [...] pessoal/Fotos/banheiro_012.jpg: Image Digitized: 2008:08:10 21:33:55 pessoal/Fotos/banheiro_013.jpg: Image Digitized: 2008:08:10 21:34:04 pessoal/Fotos/galo.jpg: Image Digitized: 2007:09:07 10:44:17 [...] Ou seja, lista todas as fotos e mostra a data e hora de criação. O que tentei fazer: for img in $(exiftime -td *.jpg); do convert -font helvetica -fill white -stroke black -pointsize 12 -draw 'text 2200,1900 "$img"' ${img}datada.jpg done Então retorna o erro como no exemplo: 'convert: missing an image filename `10:44:17datada.jpg'.' e não processa nada, apenas criando os arquivos em vazios. Creio que o problema está na passagem do nome do arquivo para o convert. O que acham? Alguém tem uma luz para destara esse nó? PS: Numa de minhas buscas encontrei diversos softwares que fazem gravação de data nas fotos, mas todos proprietários e feitos apenas para windowz. O f-spot que vem no Ubuntu lê estes metadados e organiza as fotos em pastas justamente pela data de criação, mas não tem a opção de gravar a data na foto. 2008/12/19 chinabhz <china.lis...@gmail.com>: > Caros; > Tenho uma câmera digital que não tem a função de gravar a data nas > fotos (sic)! > Daí me surgiu a idéia de criar um script que pega a data do arquivo da > foto e a escreve no arquivo. Não tenho conhecimento suficiente para > concluir a tarefa, por isso peço ajuda de vocês. > > O que já consegui: > 1) Usando o ls+awk consegui ler a pasta onde estão as fotos e retornar > apenas a data e hora de cada um > ls -lh * | awk {'print $6" "$7'} > > 2) usando o convert, do imagemagik, consegui gravar a data na foto em > UMA foto: > > convert -font helvetica -fill white -stroke black -pointsize 12 -draw > 'text 2200,1900 "datadafoto"' -stroke none -draw 'text 2200,1900 > "datadafoto"' foto.jpg fotodatada.jpg > > O que preciso: que o scritp leia o diretório de fotos e corte apenas a > data e hora e passe como variavel para o convert fazer a datagem de > todas de uma vez, sendo que na linha de comando onde está foto.jpg > ficaria a variável que seria cada data de cada foto. > > Como minha câmera é muito comum, acredito que esse script seja de > interesse geral ... Tem como fazer?? > > O que já fiz e não deu certo foi: > > #!/bin/bash > $fotos="ls -lh * | awk {'print $6" "$7'}" > for img in $fotos; do > convert -font helvetica -fill white -stroke black -pointsize 12 -draw > 'text 2200,1900 "datadafoto"' -stroke none -draw 'text 2200,1900 > "datadafoto"' $img $imgdatada > >