Cada archivo en GNU/Linux está asociado con timestamps, los cuales especifican la última vez que fue accesaro, modificado y cambiado. Siempre que creamos un fichero, o modificamos uno existente o sus atributos, esos timestamps son actualizados automáticamente. Vía TheGeekStuff veremos que el comando touch es usado para cambiar estos timestamps (access time, modification time, y change time de un fichero).
Crear un archivo vacío
Podemos crear un archivo vacío usando el comando touch. El siguiente ejemplo crearemos un archivo de cero bytes.
Podemos crear un archivo vacío usando el comando touch. El siguiente ejemplo crearemos un archivo de cero bytes.
[fraterneo@rainbow ~]$ touch archivo01.txt
[fraterneo@rainbow ~]$ touch -c archivo01.txt
Comandos como ls y find hacen uso de la información del timestamp para listar y buscar archivos. Podemos, además, crear más de un archivo con una sola llamada al comando touch. El siguiente comando creará los archivos a, b, c y d.
[fraterneo@rainbow ~]$ touch a b c d
Cambiar el tiempo de acceso
Podemos cambiar el tiempo en que fue accesado un archivo usando la opción -a. Por defecto esta tomará la fecha actual del sistema y actualizará con ella el campo atime.
Antes del comando touch -a ser ejecutado, veamos las propiedades de archivo01.txt:
[fraterneo@rainbow ~]$ stat archivo01.txt File: `archivo01.txt' Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd02h/64770d Inode: 136055 Links: 1 Access: (0664/-rw-rw-r--) Uid: ( 500/fraterneo) Gid: ( 500/fraterneo) Access: 2012-11-27 22:15:13.653052197 -0400 Modify: 2012-11-27 22:15:13.653052197 -0400 Change: 2012-11-27 22:15:13.653052197 -0400 [fraterneo@rainbow ~]$ touch -a archivo01.txt
Después de ejecutar el comando touch -a, veamos como el tiempo de acceso ha cambiado:
[fraterneo@rainbow ~]$ stat archivo01.txt File: `archivo01.txt' Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd02h/64770d Inode: 136055 Links: 1 Access: (0664/-rw-rw-r--) Uid: ( 500/fraterneo) Gid: ( 500/fraterneo) Access: 2012-11-27 22:21:16.429054012 -0400 Modify: 2012-11-27 22:15:13.653052197 -0400 Change: 2012-11-27 22:21:16.429054012 -0400
Cambiar la fecha de modificación
Haciendo uso de la opción -m podemos cambiar la fecha de modificación del archivo.
[fraterneo@rainbow ~]$ touch -m archivo01.txt [fraterneo@rainbow ~]$ stat archivo01.txt File: `archivo01.txt' Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd02h/64770d Inode: 136055 Links: 1 Access: (0664/-rw-rw-r--) Uid: ( 500/fraterneo) Gid: ( 500/fraterneo) Access: 2012-11-27 22:21:16.429054012 -0400 Modify: 2012-11-27 22:25:38.626813056 -0400 Change: 2012-11-27 22:25:38.626813056 -0400
Nota: Es imposible cambiar el ctime usando el comando touch.
Cambiar el atime y el mtime manualmente
En vez de tomar el actual time-stamp, podemos especificar manualmente usando las opciones -t y -d, con el siguiente formato para la opción -t: touch -t [[CC]YY]MMDDhhmm[.SS]
Veamos el formato anterior en detalle:
- CC – Los dos primeros digitos del año.
- YY – Los dos ultimos digitos del año. Si el valor de YY está entre 70 y 99, el valor de CC se asume como 19. Si el valor de YY está entre 00 y 37, el valor de CC se asume como 20. No es posible asignar la fecha más allá del 18 de enero de 2038.
- MM – Para el mes
- DD – Para el día
- hh – Para la hora
- mm – Para el minuto
- SS – Para los segundos
[fraterneo@rainbow ~]$ touch -a -m -t 203801181205.09 archivo01.txt [fraterneo@rainbow ~]$ stat archivo01.txt File: `archivo01.txt' Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd02h/64770d Inode: 136055 Links: 1 Access: (0664/-rw-rw-r--) Uid: ( 500/fraterneo) Gid: ( 500/fraterneo) Access: 2038-01-18 12:05:09.000000000 -0400 Modify: 2038-01-18 12:05:09.000000000 -0400 Change: 2012-11-27 22:26:53.601051078 -0400
También es posible tomar un archivo como referencia y actualizar la fecha de otros archivos. El el siguiente ejemplo actualizaremos el time-stamp del archivo X con el time-stamp del archivo Y.
[fraterneo@rainbow ~]$ touch X -r Y
HOla me gusta mucho tu sitio. Ne gustaría saber como secrea un fichero desde un linux (orden touch) pero en entorno samba, para que se cree en un windos 7 , por ejemplo. NO me deja en samba crear un fichero en windows 7 pero si un directorio.
ResponderEliminarAyuda please
Hola jesus. En ese caso debes revisar los permisos del recurso compartido en Windows o en Linux, ya que de eso depende que se puedan crear archivos.
ResponderEliminarok. Si eso que comentas tiene mucho sentido y funciona por fiín, pero sólo cuando monto la carptea en el equipo cliente mediante el comando mount. Lo que yo quiero es saber como crear un fichero , dentro del promopt de samba smb:>
EliminarSi pongo touch desde ahí, me dice que no lo reconoce. Y me pasa lo mismo con todos los linux....
O sea, mkdir si te deja, pero touch no.....
Como pueod hacerlo entonces?????? Es por saber hacerlo , que es lo que estoy estudiando,. Muchas gracias y perdona que tardara en responder, es que se ve que no me suscribi bien a este sitio.