Der touch
-Befehl wird in Unix-ähnlichen Betriebssystemen dazu verwendet, um die letzten Zugriffs-Zeitstempel (englisch access timestamp, kurz atime), Change-Zeitstempel (englisch change timestamp, kurz ctime) und/oder der letzte Änderungszeitstempel (englisch modification timestamp, kurz mtime) einer Datei zu ändern. Ohne weitere Angaben ändert touch
die Zeitstempel von mtime und atime auf den aktuellen Zeitpunkt. Wenn die Datei nicht vorhanden ist, wird sie dabei erstellt. touch
ist besonders nützlich, wenn man schnell eine Datei erstellen möchte, ohne den Inhalt zu bearbeiten, oder wenn man das Datum einer Datei ändern möchte, ohne den Inhalt zu ändern.
Syntax
touch [OPTIONEN] FILE...
Einige Beispiele für häufig verwendete Optionen sind:
-r FILE
oder--reference=FILE
: Verwendet eine Referenzdatei und übernimmt die Zeitstempel der Referenzdatei.-t TIMESTAMP
: Verwendet den angegebenen Zeitstempel, in der Form[[CC]YY]MMDDhhmm[.ss]
, anstelle des aktuellen Datums und der Uhrzeit.-c
oder--no-create
: Wenn die angegebene Datei nicht existiert, wird sie nicht erstellt. Das wird typischerweise in Skripten verwendet, um Zugriffszeiten auf eine Datei zu aktualisieren, jedoch nur, wenn sie bereits vorhanden ist.-h
oder--no-dereference
: Ändert die Zeitstempel von symbolischen Verknüpfungen anstelle der Dateien, auf die sie verweisen.-d STRING
oder--date=STRING
: Verwendt das angegebene Datum anstelle des aktuellen Datums.-a
: Ändert nur den Zugriffs-Zeitstempel (atime).-m
: Ändert nur den Änderungs-Zeitstempel (mtime).
Beispiele
Datei erstellen oder Änderungs-Zeitstempel aktualisieren
touch neue_datei.txt
Dieser Befehl erstellt eine neue Datei mit dem Namen neue_datei.txt. Wenn die Datei bereits vorhanden war, aktualisiert der Befehl lediglich den Änderungs-Zeitstempel (mtime) und die Uhrzeit auf den aktuellen Zeitpunkt. In dem folgenden Beispiel wird eine neue Datei erstellt.
$ touch neue_datei.txt
$ stat neue_datei.txt
File: neue_datei.txt
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050d Inode: 7029297 Links: 1
Access: (0664/-rw-rw-r--) Uid: (1001/test) Gid: (1001/test)
Access: 2023-03-08 11:05:29.460288363 +0000
Modify: 2023-03-08 11:05:29.460288363 +0000
Change: 2023-03-08 11:05:29.460288363 +0000
Birth: 2023-03-08 11:05:29.460288363 +0000
$
Mehrere Dateien gleichzeitig erstellen oder aktualisieren
touch neue_datei.txt datei2.txt datei3.txt
Mit diesem Befehl werden die Dateien neue_datei.txt, datei2.txt und datei3.txt gleichzeitig erstellt oder die mtime aktualisiert, wenn sie bereits existieren. Die Dateinamen werden durch Leerzeichen voneinander getrennt.
$ touch neue_datei.txt datei2.txt datei3.txt
$ stat neue_datei.txt
File: neue_datei.txt
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050d Inode: 7029298 Links: 1
Access: (0664/-rw-rw-r--) Uid: (1001/test) Gid: (1001/test)
Access: 2023-03-08 11:10:19.191641537 +0000
Modify: 2023-03-08 11:10:19.191641537 +0000
Change: 2023-03-08 11:10:19.191641537 +0000
Birth: 2023-03-08 11:05:29.460288363 +0000
$ stat datei2.txt
File: datei2.txt
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050d Inode: 7029299 Links: 1
Access: (0664/-rw-rw-r--) Uid: (1001/test) Gid: (1001/test)
Access: 2023-03-08 11:10:19.191641537 +0000
Modify: 2023-03-08 11:10:19.191641537 +0000
Change: 2023-03-08 11:10:19.191641537 +0000
Birth: 2023-03-08 11:10:19.191641537 +0000
$ stat datei3.txt
File: datei3.txt
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050d Inode: 7029300 Links: 1
Access: (0664/-rw-rw-r--) Uid: (1001/test) Gid: (1001/test)
Access: 2023-03-08 11:10:19.191641537 +0000
Modify: 2023-03-08 11:10:19.191641537 +0000
Change: 2023-03-08 11:10:19.191641537 +0000
Birth: 2023-03-08 11:10:19.191641537 +0000
$
Den Änderungs-Zeitstempel aktualisieren
touch -m datei2.txt
Mit diesem Befehl wird der Änderungs-Zeitstempel der Datei datei2.txt auf den aktuellen Zeitpunkt gesetzt.
$ touch -m datei.txt
$ stat datei2.txt
File: datei2.txt
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050d Inode: 7029301 Links: 1
Access: (0664/-rw-rw-r--) Uid: (1001/test) Gid: (1001/test)
Access: 2023-03-08 11:10:19.191641537 +0000
Modify: 2023-03-08 11:15:54.854540716 +0000
Change: 2023-03-08 11:15:54.854540716 +0000
Birth: 2023-03-08 11:10:19.191641537 +0000
$
Den Zugriffs-Zeitstempel aktualisieren
touch -a datei3.txt
Dieser Befehl aktualisiert den Zugriffs-Zeitstempel (access timestamp, kurz atime) der Datei datei3.txt. Es ändert jedoch nicht den Änderungs-Zeitstempel (modification timestamp) der Datei. Wenn die Datei „datei.txt“ nicht vorhanden ist, wird sie erstellt.
$ touch -a datei3.txt
$ stat datei3.txt
File: datei.txt
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 801h/2049d Inode: 8388850 Links: 1
Access: (0664/-rw-rw-r--) Uid: (1001/test) Gid: (1001/test)
Access: 2023-03-08 15:52:00.894281305 +0000
Modify: 2023-03-08 11:10:19.191641537 +0000
Change: 2023-03-08 15:52:00.894281305 +0000
Birth: 2023-03-08 11:10:19.191641537 +0000
$
Das Datum des Änderungs-Zeitstempel setzten
touch -d "Jan 01 12:00" datei.txt
Damit wird der Änderungs-Zeitstempel (modification timestamp, kurz mtime) und Zugriffs-Zeitstempel (access timestamp, kurz atime) der Datei datei.txt auf den 1. Januar um 12:00 Uhr gesetzt. Wenn die Datei nicht vorhanden ist, wird sie erstellt.
$ touch -d "Jan 01 12:00" datei.txt
$ stat datei.txt
File: datei.txt
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 801h/2049d Inode: 8388850 Links: 1
Access: (0664/-rw-rw-r--) Uid: (1001/test) Gid: (1001/test)
Access: 2023-01-01 12:00:00.000000000 +0000
Modify: 2023-01-01 12:00:00.000000000 +0000
Change: 2023-03-08 15:56:00.894281305 +0000
Birth: 2023-03-08 15:56:00.846017337 +0000
$
Das Datum des Zugriffs-Zeitstempel setzten
touch -c -d "Jan 01 12:00" verzeichnis/
Mit diesem Befehl wird die Option -c
verwendet, um zu verhindern, dass eine neue Datei erstellt wird, wenn sie nicht vorhanden ist. Der Befehl wird verwendet, um das Datum und die Uhrzeit des Verzeichnis verzeichnis/ auf den 1. Januar um 12:00 Uhr zu setzen, die Dateien darunter sind nicht betroffen.
$ ls -l verzeichnis/
-rw-r--r-- 1 user user 0 Mar 8 10:00 verzeichnis/testdatei.txt
$ touch -c -d "Jan 01 12:00" verzeichnis/
$ ls -l verzeichnis/
-rw-r--r-- 1 user user 0 Jan 1 12:00 verzeichnis/testdatei.txt
$ stat verzeichnis/
File: verzeichnis/
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 801h/2049d Inode: 291517 Links: 1
Access: (0664/drwxrwxr-x) Uid: (1001/test) Gid: (1001/test)
Access: 2023-01-01 12:00:00.000000000 +0000
Modify: 2023-01-01 12:00:00.000000000 +0000
Change: 2023-03-08 16:06:00.894281305 +0000
Birth: 2023-03-08 16:02:00.737707783 +0000
$ stat verzeichnis/testdatei.txt
File: verzeichnis/testdatei.txt
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 801h/2049d Inode: 1721201 Links: 1
Access: (0664/drwxrwxr-x) Uid: (1001/test) Gid: (1001/test)
Access: 2023-03-08 16:02:21.945530188 +0100
Modify: 2023-03-08 16:02:21.945530188 +0100
Change: 2023-03-08 16:02:21.945530188 +0100
Birth: 2023-03-08 16:02:21.945530188 +0100
$
Links
- https://linux.die.net/man/1/touch:
touch
-Befehl in Unix-ähnlichen Betriebssystemen. - https://wiki.ubuntuusers.de/touch/: Anleitung zum
touch
-Befehl in Ubuntu. - https://linuxize.com/post/linux-touch-command/: Ein Tutorial zum
touch
-Befehl in Linux. - https://www.howtoforge.de/anleitung/linux-touch-befehl-tutorial-fuer-anfaenger-6-beispiele/: Tutorial mit sechs Beispielen zum Linux-
touch
-Befehl. - https://www.geeksforgeeks.org/touch-command-in-linux-with-examples/: Ein Tutorial zum
touch
-Befehl in Linux mit vielen Beispielen.