Mais um vídeo pra coleção :)
Dessa vez, nada de MoneyLog, TextMate, SVN, nem Google Code.
Agora é 100% a boa e velha tela preta: Shell Script na veia!
Problema: Você copiou algumas fotos para seu HD, mas a data do arquivo não bate com a data em que a foto foi tirada. Como arrumar isso?
Acompanhe:
Roteiro:
- 00:32 – exiftool — extraí a data em que a foto foi tirada
- 01:10 – grep — pesquei a linha com a data
- 01:30 – cut — recortei a linha, descartando trechos inúteis
- 02:15 – touch — mudei a data do arquivo para a data atual
- 03:28 – tr — apaguei caracteres indesejados com a opção -d
- 04:07 – sed — inseri um ponto após um caractere com expressões regulares
- 05:02 – sed — usei um número no final do s/// para trocar a 12ª ocorrência
- 05:29 – OK, data e hora estão no formato certo
- 05:44 – touch — usei o -t para especificar uma data (aaaammddHHMM.SS)
- 06:23 – for — fiz um laço (loop) que percorre todos os arquivos
- 08:02 – $(…) — inseri a subshell dentro do loop
- 09:03 – Bug! Esqueci de usar a variável $foto dentro do loop
- 09:40 – SEMPRE USE ASPAS NAS VARIÁVEIS!
- 10:10 – Tática ninja: Use o echo antes de executar um comando complicado!
- 10:50 – Feito, datas arrumadas
- 10:59 – chmod — tirei a permissão de execução (Windows) dos arquivos
DICA: Se você for ver o vídeo lá no site do Vimeo é melhor, dá pra clicar nos números e pular direto para trechos específicos.
DICA2: Esta não é a única nem a melhor maneira de resolver este problema. O que quero demonstrar é como “pensar em shell” para resolver seus problemas. Ir construindo os comandos, um a um, até chegar no seu objetivo.
DICA3: Se quiser aprofundar seus conhecimentos em shell, recomendo o livro Shell Script Profissional, minha mãe viu a capa e disse que é muito bom! ;)



Pingback: E agora pra variar… um vídeo! :) « Blog do Aurélio (verde)
é viável, criar um script q pegue a data da foto e crie pastas e coloque as fotos dentro da respectiva pasta com a data da foto ?
Quem sabe não é o próximo vídeo do Aurélio?
Sim, basta trocar o miolo do loop. Em vez do touch, dá um mkdir e depois um mv. Vai precisar também filtrar um pouco mais o resultado do exiftool, pra tirar as horas e deixar só a data.
Olá Aurélio!
Esta sua série de vídeos está FANTÁSTICA! Sem dúvidas,
você demorou a aparecer, mas voltou com força total!!
Mas uma vez, parabéns mesmo!
[]‘s
\o/
Primeiro, vídeo ficou bem bacana. Quem ainda não viu, favor ver antes de continuar com o comentário.
….
Eu sou um cara bem preguiçoso, o que não me impede de admirar o trabalho do Aurélio e aprender quando ele libera um pouco do conhecimento dele (só não entendi o funcionamento do sokoban em sed, mas aí já é pedir muito :-) )
A opção para os preguiçosos seria: exiv2 mv -T *.jpg
O exiv2¹ mais simples que o exiftool mas também faz um bom trabalho e é usado por vários programas. Tem compilado para Windows e os fontes para os outros SOs.
HTH
¹ http://www.exiv2.org/
Guaracy, quanto tempo não o vejo por aqui meu amigo! Que bela surpresa. Por favor, apareça mais, mande notícias!
O vídeo do Sokoban eu vou ficar devendo, pois nem eu sei mais como aquele treco funciona :)
Valeu a dica do exiv2, galera do Windows, aproveite.
Aurélio,
eu também possuo um Mac, rodando o Snow Leopard
versão 10.6.3, mas no entanto ele não veio com o
exiftool. Assim, gostaria de saber como você instalou
ele no seu Mac. Eu normalmente uso o Rudix
(www.rudix.org) do Rudá para instalar comandos shell
que não vieram com o Mac, mas no caso do exiftool
ele também não está presente no Rudix.
Agradeço a atenção!
Baixei o exiftool direto do site dele. Tem um pacote pronto pro Mac já.
http://www.sno.phy.queensu.ca/~phil/exiftool/
- Conhece um cara que manja muito de Regex?
- Conheço sim, um tal de @oreio.
Um vídeo melhor que o outro, parabens grande Aurélio.
Muito bom…
Tem gente que ainda pensa que TOUCH serve pra criar um arquivo vazio.
Chamá o Júlio Neves pra eles! :-)
Olha, eu fiquei MUITO tempo pensando assim, pois quando me apresentaram o touch, foi bem assim “ele serve pra criar um arquivo vazio” :)
Diz a lenda que a API do Youtube também permite clicar em links e pular direto para o trecho do vídeo a que o link se refere. Um camarada esses dias me mandou uma página de teste que ele fez, e de fato a coisa funfa (infelizmente não tenho o link dele).
No meu caso foi só colocar o tempo nos comentários que o YouTube criou os links automaticamente.
Aurélio, acho que você pode executar o comando anterior sem o “echo” fazendo apenas isto:
^echo^
Valeu pela dica, postei no meu blog o video e o link para o seu artigo:
http://vivaotux.blogspot.com/2010/08/macetes-do-aurelio-para-renomear-fotos.html
No ubuntu para instalar o exiftool fazemos:
sudo apt-get install libimage-exiftool-perl
Verdade, boa lembrança! Aqui, ao executar este comando, ele volta a linha anterior, sem o echo, dando a chance de você editar mais alguma coisa se precisar. Aí é só apertar Enter e correr pro abraço.
Boa tarde.
Gostaria de saber se é possível uma foto ser tirada em junho de 2012 e aparecer no seu resumo que foi tirada em junho de 2010, ou seja, a máquina pode estar desconfigurada a esse ponto? Isso é comum? Me ajude se puder, por favor.
Grato.
Sim. Sim.
O que vale é o relogio da câmera. Se ele estiver errado, a hora da foto vai sair errada também.
Aurélio, bom vídeo.
Poderia me esclarecer um detalhe. Tenho algumas fotos que quando dou o comando exiftool para trazer a data de criação da foto, traz duas datas
Create Date : 2012:08:01 11:10:59
Create Date : 2012:08:01 11:10:59.35
Sabe como eu faço somente para pegar a data superior?
Grato desde já