Desde que você seja o proprietário do arquivo (ou raiz), você pode alterar a hora da modificação de um arquivo usando o touch
comando:
touch filename
Por padrão, isso definirá a hora da modificação do arquivo para a hora atual, mas há vários sinalizadores, como o -d
sinalizador para escolher uma data específica. Por exemplo, para definir um arquivo como sendo modificado duas horas antes do presente, você pode usar o seguinte:
touch -d "2 hours ago" filename
Se você deseja modificar o arquivo em relação ao tempo de modificação existente, faça o seguinte:
touch -d "$(date -R -r filename) - 2 hours" filename
Se você deseja modificar um grande número de arquivos, pode 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
selecionar apenas os arquivos nos quais você está interessado. Se você deseja atualizar apenas os tempos de modificação do arquivo em relação ao tempo atual, você pode simplificar isso para:
find DIRECTORY -exec touch -d "2 hours ago" {} +
Este formulário não é possível com a versão relativa do tempo do arquivo, porque usa o shell para formar os argumentos touch
.
Quanto ao tempo de criação, a maioria dos sistemas de arquivos Linux não controla esse valor. Existe 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 demorar o tempo de criação, mas isso é uma coincidência. Alterar explicitamente o tempo de modificação do arquivo conta como uma alteração de metadados, portanto também terá o efeito colateral de atualizar o arquivo ctime
.
touch -d "2 hours ago" /path/*.txt
por exemplo.