Come posso modificare un file senza alterarne la data di modifica? Nella riga di comando. vi
è in grado di farlo?
Come posso modificare un file senza alterarne la data di modifica? Nella riga di comando. vi
è in grado di farlo?
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:
stat()
system call (leggi di più al riguardo emettendo man 2 stat
). vi
o qualsiasi altro editor che ti piace 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.
È 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.
Leggi altre domande sui tag command-line text-editor macos file