Buscar

Linux: Cambiar fecha de un archivo

En ocasiones nos podemos encontrar con la necesidad de tener que cambiar la fecha de modificación, etc... de un archivo en sistemas Linux.

Antes de empezar, hemos de entender que existen 3 tipos de marcas de tiempo en los ficheros.

Fijémonos en este ejemplo:

Linux: Cambiar fecha de un archivo

Con el comando stat, al indicar como parámetro un fichero, vemos que aparece:

Access: Se actualiza cuando abrimos el fichero, por ejemplo, cuando utilizamos comandos tipo: car, grep, tail, etc..

Modify: Se actualiza cuando cambiamos el contenido del fichero.

Change: Se actualiza cuando cambiamos permisos, propietario: usuario, grupo, etc... 

También, dependiendo de la distribución de Linux que vayamos a utilizar, podremos ver que se utiliza: atime, ctime o mtime.

atime: Access time

mtime: Modify time

ctime: Change time

Cuando ejecutamos ls -l, estamos listando el: mtime

Cuando ejecutamos ls -lu, estamos listando el: atime

Cuando ejecutamos ls -lc, estamos listando el: ctime

Para cambiar cada uno de ellos, utilizaremos el comando: touch.

El formato para especificar la fecha con touch, es:

YYMMDD: Año, mes, día, hora, minuto.

o si también queremos especificar hora:

YYMMDDhhmm: Año, mes, día, hora, minuto.

Con parámetros específicos del comando touch, podremos cambiar directamente la fecha de: Access y Modification, pero no de Change.

Para cambiar la fecha de Change, deberemos cambiar temporalmente la hora del sistema.

Especial atención con los servicios que están funcionando sobre el equipo con cambiar la hora del sistema, puede que haya algún servicio que deje de funcionar o su funcionamiento no sea correcto.

Ejemplos:

#Modificamos el access time:

touch -a --date="2001-05-10" fichero-sysadmit.txt

#Modificamos el modification time:

touch -m --date="2001-05-10" fichero-sysadmit.txt


#Modificamos el change time:

Ahora=$(date)

#Cambiamos la hora del sistema:

date --set "2001-05-10"

#Actualizamos la hora del fichero, con la fecha actual:

touch fichero-sysadmit.txt

#Volvemos a la fecha actual:

date --set "$Ahora"


En este post, podemos ver varios ejemplos de búsqueda de ficheros modificados utilizando el comando find:

Linux: Ver últimos archivos modificados (SYSADMIT.com)

4 comentarios:

  1. Exelente articulo. Lo que quiero aclarar que cambiarle realmente la Fecha y Hora de Creacion a un archivo la idea seria crear un nuevo archivo (identico) utilizando el comando cat, ya que es imposible cambiar esa fecha y hora. Primero cambiar Fecha y Hora a linux y despues aplicar cat y por ultimo aplicar touch. Por ejemplo: cat notas1.txt > notas2.txt && touch *
    Esto es necesario para crear un nuevo archivo y evitar que se den cuenta en caso de que lo revisen desde windows (yo lo probe con varios archivos .txt)

    ResponderEliminar