Existen situaciones en las cuales necesitamos cambiar la fecha en la cual un archivo fue creado, modificado o accedido.

En muchas ocaciones los MP3-4 o memorias flash DS ordenan nuestros archivos de acuerdo a la fecha de creacion del mismos, quedandodons un pequeño desatre despues de un rato

O simplemente le dijimos a esa persona que necesitaba el diseño que “lo terminamos recién” pero la verdad es que pasamos el fin de semana de fiesta y nos olvidamos de enviárselo. Sea como sea podemos modificar la metadata de fechas de un archivo desde consolo, asi:

Esto se puede hacer mediante el comando touch

Vamos a suponer el fichero /etc/passwd:

# ls -l
total 68
-rw-r--r-- 1 root root 62303 Nov 3 16:04 passwd


Mediante touch podemos modificar la fecha con el parámetro -t. Su sintaxi es [[CC]YY]MMDDhhmm[.ss], lo que por ejemplo:

# touch -t 198312041359.25 passwd
Sería el año 1983, el mes 12, el dia 04 a las 13 horas y 59 minutos y 25 segundos. Podemos ver el resultado con un ls -l:

# ls -l
total 68
-rw-r--r-- 1 root root 62303 Dec 4 1983 passwd

Mediante los modificadores:

* -a: Modificamos únicamente el timestamp de acceso
* -m:Modificamos únicamente el timestamp de modificación


También disponemos del comando stat.

Para ello:

$ stat out.png

File: «out.png»
Size: 2619059 Blocks: 5120 IO Block: 4096 fichero regular
Device: fe03h/65027d Inode: 9699692 Links: 1
Access: (0640/-rw-r-----) Uid: ( 1000/ keopx) Gid: ( 1000/ keopx)
Access: 2011-02-17 19:51:18.644637094 +0100
Modify: 2011-02-17 19:51:18.644637094 +0100
Change: 2011-02-17 19:51:18.644637094 +0100

Para cambiar los valores basta con ejecuta:

$ touch out.png

Y si queremos realizar esto de forma recursiva con hacer lo siguiente es suficiente:

$ find . -print0 | xargs -r0 touch


Ahora ya veremos que todos los ficheros tienen la misma fecha de creación.