Datas, fotos e shell

★ Lista de episódios da série Tela Preta: 1 2 3 4 5 6 7 8 9

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 YouTube é 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! ;)

— EOF —

Gostou desse texto? Aqui tem mais.