Mientras sea el propietario del archivo (o raíz), puede cambiar la hora de modificación de un archivo con el touch
comando:
touch filename
De forma predeterminada, esto establecerá la hora de modificación del archivo a la hora actual, pero hay una serie de banderas, como la -d
bandera para elegir una fecha en particular. Entonces, por ejemplo, para configurar un archivo como modificado dos horas antes del presente, puede usar lo siguiente:
touch -d "2 hours ago" filename
Si desea modificar el archivo en relación con su tiempo de modificación existente, lo siguiente debería ser el truco:
touch -d "$(date -R -r filename) - 2 hours" filename
Si desea modificar una gran cantidad de archivos, puede usar lo siguiente:
find DIRECTORY -print | while read filename; do
# do whatever you want with the file
touch -d "$(date -R -r "$filename") - 2 hours" "$filename"
done
Puede cambiar los argumentos para find
seleccionar solo los archivos que le interesan. Si solo desea actualizar los tiempos de modificación de archivos en relación con el tiempo actual, puede simplificar esto para:
find DIRECTORY -exec touch -d "2 hours ago" {} +
Este formulario no es posible con la versión relativa del tiempo de archivo porque usa el shell para formar los argumentos touch
.
En lo que respecta al tiempo de creación, la mayoría de los sistemas de archivos de Linux no realizan un seguimiento de este valor. Hay un ctime
archivo asociado con los archivos, pero realiza un seguimiento de cuándo se modificaron por última vez los metadatos del archivo. Si el archivo nunca tiene sus permisos modificados, puede que retenga el tiempo de creación, pero esto es una coincidencia. Cambiar explícitamente el tiempo de modificación del archivo cuenta como un cambio de metadatos, por lo que también tendrá el efecto secundario de actualizar ctime
.
touch -d "2 hours ago" /path/*.txt
por ejemplo.