Finché sei il proprietario del file (o root), puoi modificare il tempo di modifica di un file usando il comando touch
:
touch filename
Di default questo imposterà il tempo di modifica del file all'ora corrente, ma ci sono un certo numero di flag, come il flag -d
per scegliere una data specifica. Ad esempio, per impostare un file come modificato due ore prima del presente, è possibile utilizzare quanto segue:
touch -d "2 hours ago" filename
Se invece vuoi modificare il file rispetto al tempo di modifica esistente, il seguente dovrebbe essere il trucco:
touch -d "$(date -R -r filename) - 2 hours" filename
Se si desidera modificare un numero elevato di file, è possibile utilizzare quanto segue:
find DIRECTORY -print | while read filename; do
# do whatever you want with the file
touch -d "$(date -R -r "$filename") - 2 hours" "$filename"
done
Puoi cambiare gli argomenti in find
per selezionare solo i file che ti interessano. Se vuoi solo aggiornare i tempi di modifica dei file relativi al tempo presente, puoi semplificarlo in:
find DIRECTORY -exec touch -d "2 hours ago" {} +
Questo modulo non è possibile con la versione relativa del file time perché usa la shell per formare gli argomenti a touch
.
Per quanto riguarda il tempo di creazione, la maggior parte dei file system Linux non tiene traccia di questo valore. Esiste un ctime
associato ai file, ma tiene traccia quando i metadati del file sono stati modificati l'ultima volta. Se il file non ha mai cambiato le sue autorizzazioni, potrebbe capitare di trattenere il tempo di creazione, ma questa è una coincidenza. La modifica esplicita del tempo di modifica del file conta come una modifica dei metadati, quindi avrà anche l'effetto collaterale dell'aggiornamento del ctime
.