¿Cómo puedo editar un archivo sin alterar su fecha de modificación?

1

¿Cómo puedo editar un archivo sin alterar su fecha de modificación? En linea de comando. ¿Es capaz vi de eso?

    
pregunta Nicolas Barbulesco 02.11.2013 - 23:43

2 respuestas

2

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:

  1. obtenga el tiempo de acceso original y el tiempo de modificación de un archivo, antes de modificarlo. Para esto, solo puede usar la llamada al sistema stat() (lea más sobre esto emitiendo man 2 stat ).
  2. modifique el archivo, usando vi o cualquier otro editor que desee
  3. establece el tiempo de modificación de nuevo a lo que era. Esto se puede hacer usando la llamada 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.

    
respondido por el mike 03.11.2013 - 00:01
1

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.

    
respondido por el user495470 03.11.2013 - 14:22

Lea otras preguntas en las etiquetas