Se você quiser aplicar um deslocamento relativo ao tempo de modificação de um arquivo, poderá fazê-lo com uma combinação de touch(1) e stat(1) . touch suporta tempos relativos, mas eles são relativos agora, não a hora atual em um arquivo. Em vez disso, você pode usar stat para obter a hora da modificação atual e aplicar um deslocamento.
Por exemplo, para aplicar um deslocamento de -2 horas à hora da modificação de um arquivo:
touch -m -d @$(( $(stat -c %Y file.txt) - 7200 )) file.txt
stat -c %Y file.txt obtém o tempo de modificação de file.txt como segundos desde a época. Usando bash expansão aritmética , você pode realizar cálculos, que neste caso é subtrair 7200 segundos (2 horas). Usando o toque com -m para alterar a hora da modificação e -d para especificar uma data, você pode definir a hora da modificação para o que foi calculado. O @ é um especificador de formato de hora que diz que o tempo especificado está em segundos desde a época.
Se você colocar isso em um shell script, poderá chamá-lo de find ou xargs , permitindo que você use find para selecionar os arquivos que deseja alterar.
#!/bin/bash
for file ; do
touch -m -d @$(( $(stat -c %Y "$file") - 7200 )) "$file"
done
Isso aplicará a alteração na hora da modificação de todos os arquivos transmitidos como argumentos.