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.