Linux / Befehl touch: Dateien erstellen und Zeitstempel ändern

touch erstellt eine leere Datei, wenn der angegebene Name noch nicht existiert, oder ändert Zugriffs- und Änderungszeitstempel einer vorhandenen Datei. Bestehende Inhalte bleiben erhalten; mit -c verhindern Sie das Erstellen fehlender Dateien.

Die Beispiele verwenden das Verhalten von GNU Coreutils. Prüfen Sie touch --help, man touch und die Dokumentation Ihrer Distribution, wenn Portabilität oder eine versionsspezifische Option wichtig ist.

Ergänzende Befehle und Anwendungsfälle finden Sie in Wesentliche Linux-Befehle: Eine praktische Referenz nach Aufgaben.

Was ist der Befehl touch?

touch ändert die Zugriffs- und Änderungszeitstempel von Dateien. Wenn eine benannte Datei nicht existiert, erstellt er eine leere reguläre Datei, es sei denn, eine Option wie -c verhindert die Erstellung. Er kann ctime oder die Erstellungszeit einer Datei nicht auf einen beliebigen Wert setzen.

Grundlegende Syntax

touch [OPTION]... FILE...

Setzen Sie Anführungszeichen um Pfade, die Leerzeichen enthalten. Wenn unterstützt, setzen Sie -- vor Operanden, die mit einem Bindestrich beginnen, damit sie nicht als Optionen interpretiert werden.

Grundlegende Verwendung von touch

Erstelle eine leere Datei

Nennen Sie einen Pfad, der nicht existiert, um eine Null-Byte-Datei zu erstellen. Sie können mehrere Dateien mit einem Befehl erstellen.

touch notes.txt
touch file1.txt file2.txt file3.txt
touch "annual report.txt"

Aktualisieren Sie Zeitstempel auf die aktuelle Zeit

Wenn die Datei bereits existiert, bleiben ihr Inhalt und ihre Größe unverändert, während ihre Zugriffs- und Änderungszeiten aktualisiert werden. Verwenden Sie stat, um die Metadaten vor und nach dem Befehl zu vergleichen.

stat notes.txt
touch notes.txt
stat notes.txt

Erstellen Sie keine fehlenden Dateien

Verwenden Sie -c oder --no-create, wenn nur bestehende Dateien geändert werden sollen. Eine fehlende Zieldatei bleibt dabei weiterhin nicht vorhanden.

touch -c existing.txt

Überprüfung des Ausführungsergebnisses

Der Befehl touch zeigt normalerweise nichts auf dem Bildschirm an, selbst wenn er erfolgreich ist. Um zu überprüfen, ob die neu erstellte Datei eine Größe von 0 Bytes hat, fragen Sie sie wie folgt ab.

touch empty-demo.txt
stat -c '%s %n' empty-demo.txt

Beispielausgabe:

0 empty-demo.txt

Wenn Sie denselben Befehl auf eine vorhandene Datei ausführen, bleiben Größe und Inhalt unverändert, und nur die Zugriffs- und Änderungszeiten können aktualisiert werden. Sie können den Unterschied mit stat -c '%x %y' überprüfen.

Wichtige Optionen

Option Zweck
-a Nur die Zugriffszeit ändern.
-m Nur die Änderungszeit ändern.
-c Fehlende Dateien nicht erstellen.
-d STRING Einen für Menschen lesbaren Datumsstring analysieren.
-t STAMP Das [[CC]YY]MMDDhhmm[.ss]-Zeitstempelformat verwenden.
-r FILE Zugriffs- und Änderungszeiten von einer Referenzdatei kopieren.
-h Den symbolischen Link selbst ändern, anstelle seines Ziels, wo unterstützt.
--time=WORD Wählen Sie Zugriffs- oder Änderungszeit.

Lange Optionen machen überprüfte Skripte oft leichter verständlich. Wenn ein Skript auf Nicht-GNU-Systemen laufen muss, überprüfen Sie jede nicht-POSIX-Option auf der Zielplattform.

Praktische Beispiele

Zugriffszeit oder Änderungszeit separat ändern

Die Schalter -a und -m wählen aus, welcher Zeitstempel geändert wird. Die Verwendung beider Schalter entspricht der Änderung beider Felder.

touch -a access-log.txt
touch -m generated.css

Einen bestimmten Zeitpunkt festlegen

Verwenden Sie in der Automatisierung eine explizite Zeitzone, damit das Ergebnis nicht von der lokalen Zeitzone der Maschine abhängt. Die kompakte Form -t ist nützlich, wenn ein fester numerischer Zeitstempel erforderlich ist.

touch -d '2026-09-23 14:30:00 +0900' report.txt
touch -t 202609231430.00 report.txt

Zeitstempel von einer anderen Datei kopieren

Die Option -r wendet die Zugriffs- und Änderungszeiten der Referenzdatei auf das Ziel an. Überprüfen Sie das Ergebnis, wenn Zeitstempel einen Build- oder Synchronisationsprozess beeinflussen.

touch -r reference.txt target.txt
stat reference.txt target.txt

touch und verwandte Befehle

Befehl oder Methode Hauptrolle Geeignet für
touch Erstellen Sie eine leere Datei oder ändern Sie atime und mtime Vorbereiten von Dateien und Zeitstempeln
truncate Ändern der logischen Größe einer Datei Erstellen einer Datei mit null Byte oder fester Größe
date Datumsangaben anzeigen und konvertieren Datumsberechnungen und Formatierung
stat Dateimetadaten lesen Überprüfen von Zeitstempeländerungen

Wichtige Hinweise

Es leert eine vorhandene Datei nicht

Das Ausführen von touch auf einer vorhandenen Datei bewahrt deren Daten. Verwenden Sie truncate -s 0 nur, wenn Sie die Datei absichtlich auf null Bytes reduzieren möchten.

ctime und Erstellungszeit sind unterschiedlich

Der Kernel aktualisiert ctime, wenn sich die Inode-Metadaten ändern. touch erlaubt es nicht, einen beliebigen ctime- oder Erstellungszeitwert zuzuweisen.

Zeitstempeländerungen können Abhängigkeitsprobleme verbergen

Das Berühren von Dateien kann zeitstempelbasierte Build-Aktionen erzwingen oder überspringen. Verwenden Sie es bewusst, damit es keinen fehlerhaften Abhängigkeitsgraphen verschleiert.

FAQ

Löscht touch den Inhalt einer vorhandenen Datei?

Nein. Es bewahrt den Inhalt und die Größe, während ausgewählte Zeitstempel geändert werden.

Wie vermeide ich es, eine fehlende Datei zu erstellen?

Verwenden Sie touch -c FILE.

Wie ändere ich nur die Änderungszeit?

Verwenden Sie touch -m FILE. Verwenden Sie -a nur für die Zugriffszeit.

Kann ich Zeitstempel von einer anderen Datei kopieren?

Ja. Verwenden Sie touch -r REFERENCE_FILE TARGET_FILE.

Weitere Angaben zu Syntax, Implementierung und Verfügbarkeit finden Sie unter GNU Coreutils touch Dokumentation und GNU Coreutils-Handbuch.