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