Você pode alterar o tempo de modificação de um arquivo usando o comando touch
:
touch filename
Por padrão, isso definirá a hora de modificação do arquivo como a hora atual, mas há vários sinalizadores, como o sinalizador -d
para escolher uma data específica. Por exemplo, para definir um arquivo como modificado duas horas antes do presente, você poderia usar o seguinte:
touch -d "2 hours ago" filename
Se você quiser modificar o arquivo em relação ao tempo de modificação existente, o seguinte deve ser feito:
touch -d "$(date -R -r filename) - 2 hours" filename
Se você quiser modificar um grande número de arquivos, poderá usar o seguinte:
find DIRECTORY -print | while read filename; do
# do whatever you want with the file
touch -d "$(date -R -r "$filename") - 2 hours" "$filename"
done
Você pode alterar os argumentos para find
para selecionar apenas os arquivos nos quais está interessado. Se desejar apenas atualizar os horários de modificação do arquivo em relação ao momento atual, você pode simplificá-lo para:
find DIRECTORY -exec touch -d "2 hours ago" {} +
Este formulário não é possível com a versão relativa ao tempo de arquivo porque ele usa o shell para formar os argumentos para touch
.
No que diz respeito ao tempo de criação, a maioria dos sistemas de arquivos Linux não rastreia esse valor. Há um ctime
associado aos arquivos, mas rastreia quando os metadados do arquivo foram alterados pela última vez. Se o arquivo nunca tiver suas permissões alteradas, pode acontecer de manter o tempo de criação, mas isso é uma coincidência. A alteração explícita do tempo de modificação do arquivo conta como uma alteração de metadados, portanto, também terá o efeito colateral de atualizar o ctime
.