9 ejemplos útiles de comando touch en Linux

Aprende a utilizar el comando touch en Linux con estos útiles y prácticos ejemplos.
Warp Terminal

El comando Touch en Linux se utiliza para cambiar las marcas de tiempo de los archivos, sin embargo, uno de los usos más comunes del comando Touch incluye la creación de un nuevo archivo vacío.

Con el comando touch, puedes cambiar el acceso, modificar y cambiar la hora de los archivos y carpetas en Linux. Puedes actualizar las marcas de tiempo o modificarlas a una fecha en el pasado.

La sintaxis del comando touch es bastante simple:

touch [opción] archivo

¿Qué son las marcas de tiempo de los archivos en Linux, de nuevo?

He escrito sobre las marcas de tiempo en Linux en detalle en un artículo anterior. Te recomiendo su lectura para una mejor y más clara comprensión. Para recordarlo rápidamente, enumeraré las marcas de tiempo aquí:

  • hora de acceso – última vez que se accedió a un archivo
  • hora de modificación – última vez que se modificó un archivo
  • hora de cambio – última vez que se cambiaron los metadatos del archivo (permiso del archivo, propiedad, etc.)

Puedes ver las marcas de tiempo de un archivo usando el comando stat de la siguiente manera:

stat file.txt 
Fichero: file.txt
Tamaño: 608680744 	Bloques: 1188840    Bloque E/S: 4096   fichero regular
Dispositivo: fc05h/64517d	Nodo-i: 659682      Enlaces: 1
Acceso: (0664/-rw-rw-r--)  Uid: ( 1000/team)   Gid: ( 1000/t)
Acceso: 2022-02-21 09:37:02.670960551 -0600
Modificación: 2022-02-21 09:37:02.642968862 -0600
Cambio: 2022-02-21 09:37:12.963817091 -0600
Creación: -

El comando Stat muestra incluso el número del Nodo-i del archivo.

9 ejemplos prácticos del comando touch en Linux

Ahora vamos a ver cómo utilizar el comando touch con algunos ejemplos sencillos pero útiles.

1. Crear un archivo vacío

Como mencioné anteriormente, este es el uso más común del comando touch. Todo lo que tienes que hacer es usar touch con el nombre del archivo.

touch <nombre_del_archivo>

Esto creará un archivo vacío si el archivo no existe.

touch archivo_vacio
ls -l archivo_vacio 
-rw-r--r-- 1 team itsfoss 0 Sep 2 14:37 archivo_vacio

¿Pero qué pasa si el archivo ya existe? En ese caso, actualizará las tres marcas de tiempo del archivo a la hora actual.

2. Crear varios archivos vacíos

También puede utilizar touch para crear más de un archivo vacío. Sólo tiene que indicar los nombres de los archivos que desea crear.

touch <archivo1> <archivo2> <archivo3>

Si crees que es agotador escribir todos los nombres de archivo, puedes autogenerar los nombres de archivo de esta manera:

touch nuevo-archivo-{1..10}.txt

Esto creará nuevo-archivo-1.txt, nuevo-archivo-2.txt hasta nuevo-archivo-10.txt.

3. Evita crear un archivo con touch si no existe

Touch actualizará las marcas de tiempo del archivo de entrada si existe y creará un archivo vacío si el archivo de entrada no existe.

¿Pero qué pasa si no quiere que touch cree un nuevo archivo vacío? Usted quiere que actualice las marcas de tiempo del archivo, pero si el archivo no existe, no debe ser creado.

Puede utilizar el comando touch con la opción -c en estos casos:

touch -c <nombre_del_archivo>
💡
Recuerda: touch creará un nuevo archivo vacío si no existe o modificará las marcas de tiempo del archivo existente. Puede detener la creación de un nuevo archivo con la opción -c.

4. Cambiar todas las marcas de tiempo de un archivo

Si usas touch en un archivo existente, cambiará el acceso, la modificación y el cambio de hora de ese archivo.

Por ejemplo, tengo este archivo llamado sherlock.txt con las siguientes marcas de tiempo:

stat sherlock.txt 
Fichero: sherlock.txt
Tamaño: 356       	Bloques: 8          Bloque E/S: 4096   fichero regular
Dispositivo: 10305h/66309d	Nodo: 11928277    Enlace: 1
Acceso: (0777/-rwxrwxrwx)  Uid: ( 1000/team)   Gid: ( 1000/team)
Acceso: 2022-01-27 09:44:56.092937000 +0530
Modificación: 2022-01-27 09:41:05.028309000 +0530
Cambio: 2022-01-27 09:44:56.096937182 +0530

Si utilizo touch en este comando, todas las marcas de tiempo se cambiarán a las marcas de tiempo actuales.

stat sherlock.txt 
Fichero: sherlock.txt
Tamaño: 356       	Bloques: 8          Bloque E/S: 4096   fichero regular
Dispositivo: 10305h/66309d	Nodo: 11928277    Enlace: 1
Acceso: (0777/-rwxrwxrwx)  Uid: ( 1000/team)   Gid: ( 1000/team)
Acceso: 2022-02-27 15:22:47.017037942 +0530
Modificación: 2022-02-27 15:22:47.017037942 +0530
Cambio: 2022-02-27 15:22:47.017037942 +0530
Creación: -
💡
Nota: No hay que preocuparse por el tiempo de cambio. Es una propiedad del sistema y no puede/debe ser controlada por el usuario. Su atención debe centrarse en el tiempo de acceso y modificación.

5. Actualizar sólo el tiempo de acceso del archivo

No siempre querrás cambiar todas las marcas de tiempo de un archivo. Si sólo quieres cambiar la hora de acceso de un archivo, puedes utilizar la opción -a con touch.

touch -a sherlock.txt 
stat sherlock.txt 
Fichero: sherlock.txt
Tamaño: 356       	Bloques: 8          Bloque E/S: 4096   fichero regular
Dispositivo: 10305h/66309d	Nodo: 11928277    Enlace: 1
Acceso: (0777/-rwxrwxrwx)  Uid: ( 1000/team)   Gid: ( 1000/team)
Acceso: 2022-02-27 15:22:47.017037942 +0530
Modificación: 2022-02-27 16:22:47.017037942 +0530
Cambio: 2022-02-27 15:22:47.017037942 +0530
Creación: -

6. Actualizar sólo la hora de modificación de un archivo

Si sólo deseas actualizar la hora de modificación de un archivo a la marca de tiempo actual, utiliza la opción -m del comando touch.

touch -m sherlock.txt 
stat sherlock.txt 
Fichero: sherlock.txt
Tamaño: 356       	Bloques: 8          Bloque E/S: 4096   fichero regular
Dispositivo: 10305h/66309d	Nodo: 11928277    Enlace: 1
Acceso: (0777/-rwxrwxrwx)  Uid: ( 1000/team)   Gid: ( 1000/team)
Acceso: 2022-02-27 15:22:47.017037942 +0530
Modificación: 2022-02-27 16:26:47.017037942 +0530
Cambio: 2022-02-27 16:26:47.017037942 +0530
Creación: -

7. Utilizar las marcas de tiempo de otro archivo

También puedes utilizar las marcas de tiempo de otro archivo como referencia con la opción -r de la siguiente manera:

touch -r <fichero_fuente> <fichero_destino>

Esto establecerá la hora de acceso y modificación del archivo de destino igual que la hora de acceso y modificación del archivo de origen.

8. Establecer la hora de acceso y modificación específica

Puede que hayas notado que en casi todos los casos (excepto en el del archivo de referencia), las marcas de tiempo se cambian a la marca de tiempo actual.

Pero no estás obligado a ello. Touch te permite establecer la hora de acceso y modificación a una fecha pasada o futura. Puedes utilizar la opción -t y una marca de tiempo con el siguiente formato:

[[CC]YY]MMDDhhmm[.ss]

  • CC – Los dos primeros dígitos de un año
  • YY – Los dos segundos dígitos de un año
  • MM – Mes del año (01-12)
  • DD – Día del mes (01-31)
  • hh – Hora del día (00-23)
  • mm – Minuto de la hora (00-59)
  • ss – Segundos (00-59)

En el caso anterior, CC es opcional. De hecho, CCYY también es opcional, tomará el año actual en ese caso. Del mismo modo, los segundos son opcionales también, por defecto es 00.

Permíteme mostrarte un ejemplo cambiando la marca de tiempo a 12021301, es decir, el 12º mes, el segundo día, la 13ª hora y el primer minuto del año actual:

touch -t 12021301 agatha.txt 
stat agatha.txt 
Fichero: agatha.txt
Tamaño: 457       	Bloques: 8          Bloque E/S: 4096   fichero regular
Dispositivo: 10305h/66309d	Nodo-i: 11928279    Enlaces: 1
Acceso: (0777/-rwxrwxrwx)  Uid: ( 1000/team)   Gid: ( 1000/team)
Acceso: 2018-12-02 13:01:00.000000000 +0530
Modificación: 2018-12-02 13:01:00.000000000 +0530
Cambio: 2018-09-02 15:59:47.588680901 +0530
Creacion: -

Si intentas introducir una fecha no válida, verás un error. También notarás que la hora de modificación utiliza la marca de tiempo actual, no la misma que la de acceso y modificación. Es porque es una propiedad del sistema.

9. Cambiar la marca de tiempo de un enlace simbólico

También puedes utilizar el comando touch con enlaces simbólicos. Sólo tienes que usar la opción -h cuando se trata de enlaces simbólicos. El resto permanece igual que los archivos regulares.

touch -h <enlace_simbólico>

Espero que encuentres útiles estos ejemplos de comandos touch en Linux. Si tienes alguna pregunta o sugerencia, háznoslo saber.

About the author
Marco Carmona

Marco Carmona

My name is Marco Antonio Carmona, I'm a physics and data science student, a great and passionate reader, and randomly, my favorite hobby is writing about what I learn day by day.

It's FOSS

Making You a Better Linux User

It's FOSS

Great! You’ve successfully signed up.

Welcome back! You've successfully signed in.

You've successfully subscribed to It's FOSS.

Success! Check your email for magic link to sign-in.

Success! Your billing info has been updated.

Your billing was not updated.