1 votos

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

¿Cómo puedo editar un archivo sin alterar su fecha de modificación? En línea de comandos. Es vi ¿podrá hacerlo?

2voto

user36155 Puntos 36

La única forma que se me ocurre es almacenar su fecha de modificación antes de alterarla y luego volver a ponerla.

No conozco ninguna herramienta CLI que te permita hacer eso, sin embargo hace años escribí algo en C que utilicé para establecer la fecha de modificación de un archivo con un valor arbitrario. Sé que esta no es la respuesta que buscas, pero yo lo haría de la siguiente manera:

  1. obtener la hora de acceso original y la hora de modificación de un archivo, antes de modificarlo. Para ello, basta con utilizar stat() (lea más sobre este tema en el apartado man 2 stat ).
  2. alterar el archivo, utilizando vi o cualquier otro editor que desee
  3. volver a poner el tiempo de modificación como estaba. Esto se puede hacer utilizando la función utimes() (de nuevo, puede obtener más información si consulta man 2 utimes comando). Tenga en cuenta, utimes() establece tanto el tiempo de acceso como el de modificación.

Editar

En realidad parece que ya hay una herramienta CLI que puede hacer eso. Según esta respuesta: ¿Cómo cambiar la fecha/hora de creación (st_birthtime) de un archivo en Lion? puede utilizar touch para cambiar esos tiempos: touch -m cambia el tiempo de modificación y touch -a cambia el tiempo de acceso (puede utilizar ambas opciones en una sola llamada). Todo lo que necesitas hacer entonces es usar la opción stat en el archivo antes de modificarlo y mostrar sus tiempos de acceso y modificación. A continuación, realice la edición y, después, utilice touch para devolver los tiempos de acceso/modificación a sus valores de antes de la edición.

1voto

Puedes usar touch -t para cambiar los tiempos de modificación y acceso, touch -m para cambiar el tiempo de modificación, o touch -a para cambiar el tiempo de acceso. Todos ellos también cambian la hora de creación si la hora de destino es anterior a la hora 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 date -jf, -j desactiva la fijación de la hora y -f especifica el formato.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X