Comment puis-je changer la date de "changement"?
$ touch -t 9901010000 test;stat test
File: `test'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fe01h/65025d Inode: 11279017 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ x) Gid: ( 1000/ x)
Access: 1999-01-01 00:00:00.000000000 +0100
Modify: 1999-01-01 00:00:00.000000000 +0100
**Change: 2012-04-08 19:26:56.061614473 +0200**
Birth: -
Vous ne pouvez pas changer le TEMPT par des moyens ordinaires. Ceci est par conception: le TEMBE est toujours mis à jour au courant lorsque vous modifiez l'une des métadonnées du fichier et que vous n'aurez aucun moyen d'imposer un Time différent. Pour modifier le Time d'un fichier, vous devez faire l'une des opérations suivantes:
debugfs
) et twiddle les bits sur le disque (ne le faites pas pendant monté du système de fichiers).Vous avez la réponse sur l rapproquement SO Question pointée par JW013, pour Extx, sur Disque non monté :
# Update ctime
debugfs -w -R 'set_inode_field /tmp/foo ctime 201001010101' /dev/sda1
# Drop vm cache so ctime update is reflected
echo 2 > /proc/sys/vm/drop_caches
Le Time d'un fichier est mis à jour lorsque l'une des métadonnées est modifiée.
$ ls -l x.py
-rw-rw-r--. 1 ignacio ignacio 485 Mar 26 2010 x.py
$ stat -c %z x.py
2010-03-26 11:57:56.237068175 -0400
$ chown ignacio x.py
$ stat -c %z x.py
2012-04-08 15:31:33.682383575 -0400
$ ls -l x.py
-rw-rw-r--. 1 ignacio ignacio 485 Mar 26 2010 x.py
Evandrix 's Réponse Extrait de la ligne suivante,NOW=$(date) && date -s "2030-08-15 21:30:11" && touch file.txt && date -s "$NOW"
[.____] doit être amélioré comme décrit ci-dessous:
Dans certains systèmes comme le mien, date
sortie ne donne pas de format valide à définir avec date -s
Mon système
bash
Version shell: GNU BASH, version 5.0.3 (1) -Release (x86_64-pc-linux-gnu)
[.____] Mon systèmedate
version de commande: date (GNU Coreutils) 8.30
Mon système date
Sortie de commande et réglage de la date avec ce format est:
# date
Tue 21 Jan 2020 01:36:22 PM +03
# date -s "Tue 21 Jan 2020 01:36:22 PM +03"
date: invalid date ‘Tue 21 Jan 2020 01:36:22 PM +03’
Il est donc nécessaire d'améliorer Evandrix réponse;
[.____] Il serait préférable d'attribuer la variable maintenant à la valeur horodatale
[.____] change NOW=$(date)
à NOW=$(date +@%s)
NOW=$(date +@%s) && date -s "2030-08-15 21:30:11" && \
touch file.txt && date -s "$NOW"
Ajout de la commande Sudo
pour l'utilisateur non root
Sudo bash -c 'NOW=$(date +@%s);
date -s "2030-08-15 21:30:11";
touch file.txt;
date -s "$NOW"'
ou
Sudo bash -c 'NOW=$(date +@%s); date -s "$2"; touch "$1"; date -s "$NOW"' -- \
"file.txt" "2030-08-15 21:30:11"
De cette manière pour une utilisation facile, le nom de fichier et la date de réglage sont attribués en tant qu'arguments à la fin de la ligne.