Linux / Comando / touch / Creación de archivos vacíos y cambio de la última hora de modificación
En Linux, touch crea un archivo vacío si no existe, y si el archivo existe, actualiza los tiempos de acceso y modificación a la hora actual por defecto. No borra el contenido de archivos existentes, pero puede afectar copias de seguridad o procesos de compilación que dependen de la información de tiempo.
Creación de archivos vacíos
El siguiente comando crea un archivo vacío en el directorio actual si example.txt no existe. Los ejemplos posteriores se basan en touch y stat de GNU coreutils. Ejecútelos en un directorio de práctica vacío separado para evitar afectar los datos existentes.
touch example.txt
ls -l example.txt
Un archivo con tamaño 0 aparecerá en la lista. Si un archivo con el mismo nombre ya existe, no lo sobrescribe con un nuevo archivo vacío, sino que actualiza el tiempo del archivo existente. Si el nombre contiene espacios, colóquelo entre comillas como touch "my notes.txt". Si se enumeran varios nombres separados por espacios, cada uno será procesado.
Verificación y actualización del tiempo de un archivo existente
El tiempo de acceso (atime) de un archivo se relaciona con el último acceso, y el tiempo de modificación (mtime) se relaciona con la última modificación del contenido del archivo. Por defecto, touch example.txt establece ambos tiempos a la hora actual. Puedes comprobar antes y después del cambio de la siguiente manera.
stat example.txt
touch example.txt
stat example.txt
Compara las entradas Access y Modify en la salida de stat. El idioma real de la salida y el formato de visualización pueden variar según el entorno, y las diferencias en intervalos muy cortos pueden no ser visibles debido a la resolución temporal del sistema de archivos.
El tiempo de cambio de estado (ctime) está relacionado con cambios en los metadatos como los permisos y no es lo mismo que el tiempo de creación. Cambiar la información de tiempo con touch también puede actualizar el ctime, pero no se puede establecer el ctime a un valor arbitrario ni cambiar el tiempo de creación. Si el tiempo de acceso se actualiza en cada lectura también está afectado por el sistema de archivos y la configuración de montaje. Puede verificar el significado de cada tiempo en Descripción del tiempo de archivo de GNU.
Cambiar solo el tiempo de acceso o de modificación
-a selecciona solo el tiempo de acceso, y -m selecciona solo el tiempo de modificación. A continuación se muestra un ejemplo de cómo cambiar el tiempo de modificación de un archivo de práctica al tiempo actual y verificar el resultado.
touch -m example.txt
stat example.txt
-a selecciona la hora de acceso, mientras que -m selecciona la hora de modificación. Esto no significa que se conservará la hora de cambio de estado del archivo. Si el archivo no existe, se crea un archivo vacío a menos que se especifique una opción diferente.
Usa una hora deseada o la hora de otro archivo
Puedes especificar la fecha y la hora con GNU touch -d. El ejemplo a continuación establece las horas de acceso y modificación del archivo de práctica a la hora especificada.
touch -d '2024-01-15 10:30:00' example.txt
stat example.txt
Si no se especifica una zona horaria, la fecha y la hora se interpretan según la variable de entorno TZ o la zona horaria del sistema. Verifique que los tiempos de acceso y modificación de salida coincidan con los valores especificados. Los valores guardados pueden variar según el rango y la resolución admitidos por el sistema de archivos.
Para usar otro archivo como referencia, utilice -r. El siguiente es un ejemplo cuando tanto reference.txt como example.txt existen en el directorio actual.
touch -r reference.txt example.txt
stat reference.txt example.txt
Establezca los tiempos de acceso y modificación del archivo de destino a los valores del archivo de referencia. Si el archivo de referencia no existe, se producirá un error y, por defecto, se puede crear un archivo vacío si el destino no existe. Para opciones detalladas, consulte el manual de GNU touch .
Actualizar solo la hora sin crear un archivo
-c no crea un archivo nuevo si el archivo especificado no existe. El siguiente comando actualiza la hora a la hora actual si el archivo ya existe, y no lo crea si no existe.
touch -c example.txt
Dado que puede finalizar sin error incluso cuando el archivo no existe, no use solo el estado de éxito de este comando para verificar la existencia del archivo. Para crear un archivo nuevo, se requiere permiso de escritura en el directorio padre, y el permiso para cambiar la hora de un archivo existente depende del propietario y de la hora que desea establecer. Si ocurre un error, verifique la ruta y los permisos.




