Isso
- funciona em Linux / Mac,
- não usa atrasos artificiais para criar intervalo de tempo e
- mantém a data de modificação perto do original (muitas vezes acho essas datas úteis em outros contextos).
#!/bin/sh
REF=${1}
i=1
while [ $# -gt 1 ]; do
if ! [ "${2}" = "${REF}" ]; then
touch -h -r "${REF}" -d "+${i} seconds" "${2}"
i=$((i+1))
fi
shift
done
Basta especificar os arquivos na ordem temporal desejada e ele usará o registro de data e hora do primeiro arquivo como base e adicionará um segundo de forma incremental a cada um dos seguintes argumentos.
Se o arquivo de referência for dado várias vezes, ele reterá seu horário original (isso é apenas para poder fazer, por exemplo, "retime 0001.jpg *" sem alterar o registro de data e hora de referência). Se outro arquivo for dado várias vezes, ele receberá o último registro de data e hora lógico.
Sem -h
, touch
irá desreferenciar links simbólicos, o que provavelmente não é desejado neste caso (se você disser "symbolic what-now?", então não se preocupe).