Linux / Comando touch: crear archivos y cambiar sus marcas de tiempo
touch es un comando que crea un archivo vacío si no existe, y si el archivo existe, actualiza la hora de acceso y la hora de modificación. Permite ajustar solo la marca de tiempo sin cambiar el contenido del archivo, y se utiliza con frecuencia en la creación de archivos de prueba, tareas de compilación y scripts de automatización.
En este artículo, se explica la forma básica de uso de touch de GNU Coreutils, la selección de atime y mtime, la especificación de la fecha deseada, la copia del tiempo de un archivo de referencia y el manejo de enlaces simbólicos.
¿Qué es el comando touch?
touch establece por defecto la hora de acceso (access time) y la hora de modificación del contenido (modification time) del archivo especificado a la hora actual. Si el archivo no existe, crea un archivo normal de 0 bytes, pero usando -c no se crea un archivo nuevo. No es un comando para establecer directamente ctime o la hora de creación del archivo (Birth time) a un valor deseado.
Sintaxis básica
touch [OPCIONES] ARCHIVO...
Use comillas en rutas con espacios y -- antes de nombres que puedan empezar por guion. Ejecute los ejemplos en un directorio de práctica nuevo. Para comparar el antes y el después, cree previamente notes.txt y reference.txt con contenido de prueba; touch -r requiere que exista el archivo de referencia. Consulte touch --help y man touch para verificar las opciones disponibles.
Uso básico de touch
Crear un archivo vacío
Si se especifica una ruta que no existe, se crea un archivo vacío. También se pueden crear varios archivos a la vez.
touch memo.txt
touch file1.txt file2.txt file3.txt
touch "annual report.txt"
Actualizar la hora actual de un archivo existente
Si el archivo ya existe, su contenido y tamaño se mantienen, y las fechas de acceso y modificación se actualizan a la hora actual. Los valores antes y después se pueden verificar con stat.
stat notes.txt
touch notes.txt
stat notes.txt
No crear si el archivo no existe
Si solo desea actualizar la hora del archivo existente, utilice -c o --no-create. No se creará un archivo nuevo incluso si no existe el objetivo, y generalmente no se mostrará ningún mensaje de error.
touch -c existing.txt
Verificar el resultado de la ejecución
touch generalmente no muestra nada en la pantalla incluso si tiene éxito. Para verificar si el tamaño del archivo recién creado es de 0 bytes, consulte de la siguiente manera:
touch empty-demo.txt
stat -c '%s %n' empty-demo.txt
Ejemplo de salida:
0 empty-demo.txt
Si ejecuta el mismo comando en un archivo existente, su tamaño y contenido permanecen iguales, y solo se pueden actualizar las fechas de acceso y modificación. Puede verificar la diferencia con stat -c '%x %y'.
Opciones principales
| Opciones | Descripción |
|---|---|
-a |
Solo se cambia la fecha de acceso. |
-m |
Solo se cambia la fecha de modificación del contenido. |
-c, --no-create |
No se crea un archivo nuevo aunque el archivo de destino no exista. |
-d STRING |
Interpreta cadenas de fecha legibles por humanos para establecer la hora. |
-t STAMP |
Especifica la hora en el formato [[CC]YY]MMDDhhmm[.ss]. |
-r FILE |
Copia la hora de acceso y modificación del archivo de referencia. |
-h, --no-dereference |
En los sistemas posibles, cambia la hora del enlace simbólico en sí, no del objetivo del enlace. |
--time=WORD |
Selecciona la hora a cambiar, como access o modify. |
Las opciones largas facilitan entender su significado y también ayudan a revisar scripts. Sin embargo, en scripts donde la portabilidad es importante, primero verifique si el sistema objetivo soporta esas opciones de extensión GNU.
Ejemplos de uso práctico
Cambiar la hora de acceso y la hora de modificación por separado
-a cambia solo atime, -m cambia solo mtime. Usar ambas opciones cambia ambas horas como acción predeterminada.
touch -a access-log.txt
touch -m generated.css
Especificar la fecha y hora deseadas
-d interpreta cadenas de fecha. El primer ejemplo indica explícitamente UTC+09:00; -t interpreta la fecha en la zona horaria local o en la indicada por TZ. Por tanto, las dos órdenes siguientes fijan el mismo instante solo si la segunda se ejecuta en UTC+09:00 para esa fecha. Use una zona explícita cuando necesite reproducir un instante en distintos equipos.
touch -d '2026-09-23 14:30:00 +0900' report.txt
touch -t 202609231430.00 report.txt
Copiar la marca de tiempo del archivo de referencia
Con -r se pueden aplicar atime y mtime del archivo de referencia a otros archivos. Después de copiarlos, verifique el resultado con stat.
touch -r reference.txt target.txt
stat reference.txt target.txt
Comparación con comandos relacionados de touch
| Comando / método | Rol principal | Situaciones adecuadas |
|---|---|---|
touch |
Crear un archivo vacío o cambiar atime·mtime | Cuando se prepara un archivo o tiempo sin escribir contenido |
truncate |
Especificar o ajustar el tamaño del archivo | Cuando se necesita un archivo de 0 bytes o un archivo de un tamaño específico |
date |
Mostrar y convertir la hora actual y gestión del tiempo del sistema | Cuando se necesita calcular fechas o convertir formatos |
stat |
Consultar metadatos de archivos | Cuando se desea verificar la marca de tiempo antes y después de un cambio |
Precauciones al usar
touch no vacía el contenido
Incluso al ejecutar touch en un archivo existente, se mantiene el contenido del archivo. Para reducir un archivo a 0 bytes, debe usar truncate -s 0 o una redirección adecuada.
ctime y la fecha de creación no se pueden especificar directamente
Cuando el estado del inodo de un archivo cambia, el kernel actualiza el ctime. No suponga que puede establecer ctime o Birth time en un valor arbitrario usando touch.
No manipule el tiempo para alterar las decisiones de recompilación
Es útil al forzar la reconstrucción en herramientas de compilación basadas en marcas de tiempo, pero si se usa para ocultar problemas de dependencia, pueden ocurrir resultados difíciles de reproducir.
FAQ
¿Se elimina el contenido del archivo con touch?
No. El contenido y el tamaño del archivo existente se mantienen y solo se cambia la marca de tiempo seleccionada.
¿Qué hacer si no quiero crear un archivo cuando no existe?
Use touch -c ARCHIVO. No crea un archivo nuevo si el destino no existe.
¿Cómo cambiar solo la hora de modificación?
Se utiliza touch -m ARCHIVO. Si solo desea cambiar la hora de acceso, use -a.
¿Se puede sincronizar con la hora de otro archivo?
Usando touch -r REFERENCIA DESTINO, puede copiar la hora de acceso y modificación del archivo de referencia.
Para comparar otras operaciones sobre archivos, consulte la Lista de comandos de uso frecuente en Linux. La sintaxis de fechas y las opciones están descritas en la Documentación oficial de GNU Coreutils touch y en el Manual oficial de GNU Coreutils.




