stat — Detaillierte Datei- und Dateisystem-Informationen
Mit stat alle Metadaten einer Datei anzeigen — Größe, Rechte, Eigentümer, Zeitstempel und Inode, dazu Format-Strings und Dateisystem-Status.
stat zeigt dir alle Metadaten einer Datei auf einen Blick – deutlich mehr als ls -l: exakte Größe in Bytes, Rechte sowohl symbolisch als auch oktal, Eigentümer und Gruppe, Inode-Nummer und die drei Zeitstempel für Zugriff (atime), Änderung (mtime) und Statuswechsel (ctime). Mit der Option -c und Format-Strings wie %s, %a oder %U baust du dir die Ausgabe genau so, wie du sie für Skripte brauchst. Wichtig: Die hier gezeigte Syntax gilt für das GNU-stat der coreutils unter Linux. Auf macOS und BSD heißt der Format-Schalter -f (statt -c) und verwendet völlig andere Platzhalter – dort ist -f außerdem nicht der Dateisystem-Status. Unter Linux blendest du mit -f den Dateisystem-Status statt der Datei-Infos ein.
Grundlagen
stat <datei> — Zeigt alle verfügbaren Informationen über eine Datei.
stat index.htmlstat -f <dateisystem> — Zeigt den Dateisystem-Status statt des Datei-Status.
stat -f /stat -L <symlink> — Folgt Symlinks und zeigt Infos über die Zieldatei.
stat -L /usr/bin/python3stat <datei1> <datei2> — Zeigt Informationen für mehrere Dateien.
stat *.confFormat-Strings — Datei-Infos
stat -c '%s' <datei> — Zeigt die Dateigröße in Bytes.
stat -c '%s' backup.tar.gzstat -c '%n %s' <datei> — Zeigt Dateinamen und Größe.
stat -c '%n %s' *.logstat -c '%A' <datei> — Zeigt menschenlesbare Rechte (z. B. -rwxr-xr-x).
stat -c '%A' script.shstat -c '%a' <datei> — Zeigt die Rechte als Oktalzahl (z. B. 755).
stat -c '%a' /etc/passwdstat -c '%U:%G' <datei> — Zeigt Eigentümer- und Gruppennamen.
stat -c '%U:%G' /var/log/syslogstat -c '%F' <datei> — Zeigt den Dateityp (reguläre Datei, Verzeichnis, Symlink usw.).
stat -c '%F' /dev/nullstat -c '%i' <datei> — Zeigt die Inode-Nummer.
stat -c '%i' myfile.txtFormat-Strings — Zeitstempel
stat -c '%y' <datei> — Zeigt die letzte Änderungszeit (menschenlesbar).
stat -c '%y' config.yamlstat -c '%x' <datei> — Zeigt die letzte Zugriffszeit.
stat -c '%x' data.csvstat -c '%z' <datei> — Zeigt die letzte Statusänderungszeit (ctime).
stat -c '%z' /etc/hostsstat -c '%w' <datei> — Zeigt die Erstellungszeit (Birth-Time), falls verfügbar.
stat -c '%w' readme.mdstat -c '%Y' <datei> — Zeigt die Änderungszeit als Unix-Zeitstempel (Sekunden seit Epoch).
stat -c '%Y' deploy.logDateisystem-Infos
stat -f -c '%T' <pfad> — Zeigt den Dateisystem-Typ.
stat -f -c '%T' /stat -f -c '%b %S' <pfad> — Zeigt die Gesamtzahl der Blöcke und die Blockgröße.
stat -f -c '%b %S' /homestat -f -c '%a' <pfad> — Zeigt die für nicht-privilegierte Benutzer verfügbaren Blöcke.
stat -f -c '%a' /tmpHäufige Muster
stat -c '%a %n' * — Listet die Rechte aller Dateien im aktuellen Verzeichnis auf.
stat -c '%a %n' /etc/*.confstat -c '%s %n' * | sort -n — Listet Dateien nach Größe sortiert auf.
stat -c '%s %n' *.log | sort -nstat -c '%Y %n' * | sort -n | tail -5 — Zeigt die 5 zuletzt geänderten Dateien.
stat -c '%Y %n' /var/log/* | sort -n | tail -5stat -c '%U %n' * | grep -v root — Findet Dateien, die nicht root gehören.
stat -c '%U %n' /usr/local/bin/* | grep -v root Fazit
stat ist dein Werkzeug, wenn ls -l nicht genug verrät: exakte Bytes, alle drei Zeitstempel und die Inode auf einen Blick. Seine wahre Stärke spielt es mit -c und Format-Strings aus – damit erzeugst du genau die Felder, die ein Skript weiterverarbeiten kann, etwa stat -c '%s %n' für eine nach Größe sortierbare Liste. Achte beim Portieren von Skripten auf die Plattform: GNU-stat nutzt -c mit den hier gezeigten Platzhaltern, macOS/BSD dagegen -f mit einer komplett anderen Format-Syntax – Skripte, die auf beiden laufen sollen, müssen das berücksichtigen (oder unter macOS gstat aus den coreutils verwenden). Für den schnellen Überblick bleibt ls, für den Inhalts-basierten Dateityp file und zum Ändern der Rechte chmod.
Weiterführende Links
- ubuntuusers-Wiki: stat – deutschsprachige Einführung mit den wichtigsten Format-Platzhaltern
- GNU Coreutils: stat invocation – offizielle Referenz aller Format-Strings (englisch)