Dieser Artikel stellt vor, wie man die Änderungszeit (mtime) und Erstellungszeit (ctime) von Dateien in Bash auf der Linux-Befehlszeile ändert.
Es gibt Fälle, in denen Sie die Dateiänderungszeit aktualisieren möchten, ohne in die Datei zu schreiben oder darauf zuzugreifen.
Allerdings scheint es, dass Sie Dateien nicht mit printf oder echo aktualisieren können, sodass es besser ist, die hier erklärte Methode zu verwenden, es sei denn, Sie möchten etwas Mühsames tun wie Zeichen hinzufügen und entfernen.
# Eine Newline wird zur Datei hinzugefügt
echo "" >> "${TIME_MANAGEMENT_DIR}/time_management.txt"
# Es werden keine Änderungen an der Datei vorgenommen, aber auch die Änderungszeit wird nicht geändert.
printf "" >> "${TIME_MANAGEMENT_DIR}/time_management.txt"
Lassen Sie uns zunächst die aktuelle Änderungszeit und Zugriffszeit einer Datei mit stat überprüfen.
$stat "${TIME_MANAGEMENT_DIR}/time_management.txt"
File: '/mnt/c/time_management/time_management.txt'
Size: 385 Blocks: 0 IO Block: 4096 regular file
Device: 11h/17d Inode: 336362597169482697 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 1000/ yuis) Gid: ( 1000/ yuis)
Access: 2019-06-29 14:59:40.666044600 +0900
Modify: 2019-06-29 14:59:40.666044600 +0900
Change: 2019-06-29 14:59:40.666044600 +0900
Um die Zugriffszeit zu ändern, verwenden Sie touch -a.
$ /bin/touch -a --date="@1561788231" "${TIME_MANAGEMENT_DIR}/time_management.txt"
# // `1561788231` ... `date +%s`
$ /bin/touch --help
-a change only the access time
-d, --date=STRING parse STRING and use it instead of current time
-m change only the modification time
Es hat sich geändert.
$ stat "${TIME_MANAGEMENT_DIR}/time_management.txt"
File: '/mnt/c/time_management/time_management.txt'
Size: 385 Blocks: 0 IO Block: 4096 regular file
Device: 11h/17d Inode: 336362597169482697 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 1000/ yuis) Gid: ( 1000/ yuis)
Access: 2019-06-29 15:03:51.000000000 +0900
Modify: 2019-06-29 14:59:40.666044600 +0900
Change: 2019-06-29 15:04:49.266605100 +0900
Birth: -
Ähnlich wie oben verwenden Sie touch -m für die Änderungszeit.
/bin/touch -m --date="@$( date +%s )" "${TIME_MANAGEMENT_DIR}/time_management.txt"
Linux - Fake File Access, Modify and Change TimeStamps - ShellHacks