Come posso modificare un file senza alterarne la data?

1

Come posso modificare un file senza alterarne la data di modifica? Nella riga di comando. vi è in grado di farlo?

    
posta Nicolas Barbulesco 02.11.2013 - 23:43
fonte

2 risposte

2

L'unico modo che posso pensare è di memorizzare la sua data di modifica prima di alterarla e quindi di reimpostarla di nuovo.

Non sono a conoscenza di alcuno strumento CLI che ti consenta di farlo, tuttavia anni fa ho scritto qualcosa in C che ho usato per impostare la data di modifica su un file su un valore arbitrario. So che questa non è la risposta che stai cercando, ma lo farei nel seguente modo:

  1. ottenere il tempo di accesso originale e il tempo di modifica per un file, prima di modificarlo. Per fare ciò, puoi semplicemente usare stat() system call (leggi di più al riguardo emettendo man 2 stat ).
  2. altera il file, utilizzando vi o qualsiasi altro editor che ti piace
  3. imposta il tempo di modifica su ciò che era. Questo può essere fatto usando la chiamata utimes() (di nuovo, puoi leggere di più emettendo il comando man 2 utimes ). Tieni presente che utimes() imposta sia il tempo di accesso sia il tempo di modifica.

Modifica

In realtà sembra che ci sia già uno strumento CLI in grado di farlo. Secondo questa risposta: Come cambiare la data / ora di creazione (st_birthtime) di un file in Lion? , puoi usare touch command per cambiare quei tempi: touch -m cambia il tempo di modifica e touch -a cambia il tempo di accesso (puoi usare entrambe le opzioni in una chiamata). Tutto quello che dovresti fare è usare la riga di comando stat sul file prima di modificarlo e visualizzare i suoi tempi di accesso e modifica. Poi fai la modifica e dopo, usa touch per impostare i tempi di accesso / modifica ai loro valori prima della modifica.

    
risposta data 03.11.2013 - 00:01
fonte
1

È possibile utilizzare touch -t per modificare la modifica e i tempi di accesso, toccare -m per modificare l'ora di modifica o toccare -a per modificare il tempo di accesso. Tutti loro cambiano anche il tempo di creazione se il tempo di destinazione è precedente all'orario di creazione originale.

$ 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 specifica la stringa di formato come tempo di modifica. In data -jf, -j disabilita l'impostazione dell'ora e -f specifica il formato.

    
risposta data 03.11.2013 - 14:22
fonte

Leggi altre domande sui tag