¿Cómo puedo editar un archivo sin alterar su fecha de modificación? En linea de comando. ¿Es capaz vi
de eso?
¿Cómo puedo editar un archivo sin alterar su fecha de modificación? En linea de comando. ¿Es capaz vi
de eso?
La única forma en que puedo pensar es almacenar la fecha de modificación antes de modificarla y luego volver a establecerla.
No conozco ninguna herramienta CLI que le permita hacerlo, sin embargo, hace años, escribí algo en C que usé para establecer la fecha de modificación en un archivo en un valor arbitrario. Sé que esta no es la respuesta que está buscando, pero lo haría de la siguiente manera:
stat()
(lea más sobre esto emitiendo man 2 stat
). vi
o cualquier otro editor que desee utimes()
(nuevamente, puede leer más al emitir el comando man 2 utimes
). Tenga en cuenta que utimes()
establece tanto el tiempo de acceso como el tiempo de modificación. Editar
En realidad, parece que ya hay una herramienta CLI que puede hacer eso. De acuerdo con esta respuesta: ¿Cómo cambiar la fecha / hora de creación (st_birthtime) de un archivo en Lion? , puede usar el comando touch
para cambiar esos tiempos: touch -m
cambia la hora de modificación y touch -a
cambia el tiempo de acceso (puede usar ambas opciones en una llamada). Todo lo que necesita hacer es usar la línea de comando stat
en el archivo antes de modificarlo y mostrar sus tiempos de acceso y modificación. Luego realice la edición y, a continuación, utilice touch
para establecer los tiempos de acceso / modificación a sus valores anteriores a la edición.
Puede usar touch -t para cambiar los tiempos de modificación y acceso, toque -m para cambiar el tiempo de modificación, o toque -a para cambiar el tiempo de acceso. Todos ellos también cambian el tiempo de creación si el tiempo objetivo es anterior al tiempo de creación original.
$ ls -lT test.txt
-rw-r--r-- 1 lauri staff 3 Nov 3 15:13:42 2013 test.txt
$ date -jf %s $(stat -f%m test.txt) +%Y%m%d%H%M.%S
201311031513.42
$ vi test.txt
$ ls -lT test.txt
-rw-r--r-- 1 lauri staff 3 Nov 3 15:18:18 2013 test.txt
$ touch -t 201311031513.42 test.txt
$ ls -lT test.txt
-rw-r--r-- 1 lauri staff 3 Nov 3 15:13:42 2013 test.txt
stat -f% m especifica la cadena de formato como la hora de modificación. En la fecha -jf, -j desactiva la configuración de la hora y -f especifica el formato.
Lea otras preguntas en las etiquetas macos command-line file text-editor