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.




