Este pequeno script de shell percorrerá todos os arquivos no diretório atual e comparará seu carimbo de data / hora da última modificação ao intervalo criado pelos carimbos de data start
e end
(aqui, 10 de outubro). Os arquivos correspondentes são adicionados à matriz files
e, se houver arquivos na matriz, ele chama convert
neles. Ajuste o -gt 0
para -gt 1
se você quiser ter pelo menos dois arquivos (ou mais).
Observe que o tempo de criação não é normalmente preservado nos atributos de um arquivo (Unix), portanto, esse método poderia ser enganado por um simples touch 1476158400.jpg
, o que faria um arquivo antigo parecer novo. Veja abaixo uma segunda opção.
#!/usr/bin/env bash
start=$(date +%s -d 'Oct 10 2016')
end=$(date +%s -d 'Oct 11 2016')
files=()
for f in *
do
d=$(stat -c%Z "$f")
[[ $d -ge $start ]] && [[ $d -le $end ]] && files+=("$f")
done
[[ ${#files[*]} -gt 0 ]] && convert -delay 10 -loop 0 "${files[*]}" animation.gif
Como alternativa, se os próprios nomes de arquivo codificam o timestamp de criação, você pode usar um loop de força bruta para encontrá-los:
start=$(date +%s -d 'Oct 10 2016')
end=$(date +%s -d 'Oct 11 2016')
files=()
for((i=start;i<=end;i++)); do [[ -f "${i}.jpg" ]] && files+=("${i}.jpg"); done
[[ ${#files[*]} -gt 0 ]] && convert -delay 10 -loop 0 "${files[*]}" animation.gif