# ls - Dateien und Verzeichnisse auflisten Der `ls`-Befehl listet Dateien und Verzeichnisse auf und zeigt deren Eigenschaften. ## Grundsyntax ```bash ls [OPTIONEN] [PFAD...] ``` ## Grundlegende Verwendung ### Einfache Auflistung ```bash ls # Aktuelles Verzeichnis ls /pfad/zum/ordner # Bestimmtes Verzeichnis ls datei.txt # Einzelne Datei ``` ### Versteckte Dateien anzeigen ```bash ls -a # Alle Dateien (inkl. .dotfiles) ls -A # Alle außer . und .. ``` ## Detaillierte Ausgabe ### Long Format (-l) ```bash ls -l ``` Beispielausgabe: ``` -rw-r--r-- 1 alice developers 1234 Nov 7 10:00 datei.txt drwxr-xr-x 2 alice developers 4096 Nov 7 09:30 ordner lrwxrwxrwx 1 alice developers 15 Nov 7 08:00 link -> /pfad/zu/ziel ``` Spalten: - **1. Zeichen**: Typ (`-` = Datei, `d` = Verzeichnis, `l` = Link) - **2-10**: Rechte (rwx für User, Group, Others) - **Zahl**: Anzahl Hardlinks - **User**: Eigentümer - **Group**: Gruppe - **Größe**: in Bytes - **Datum/Zeit**: letzte Änderung - **Name**: Dateiname ### Menschenlesbare Größen (-h) ```bash ls -lh ``` Beispielausgabe: ``` -rw-r--r-- 1 user staff 12K Nov 7 10:00 file.txt -rw-r--r-- 1 user staff 1.2M Nov 7 09:30 big.dat drwxr-xr-x 2 user staff 4.0K Nov 7 08:00 ordner ``` Größen werden in KB, MB, GB statt Bytes angezeigt. ## Sortierung ### Nach Name (Standard) ```bash ls # Alphabetisch ls -r # Umgekehrt ``` ### Nach Änderungsdatum ```bash ls -lt # Neueste zuerst ls -ltr # Älteste zuerst ``` ### Nach Größe ```bash ls -lS # Größte zuerst ls -lSr # Kleinste zuerst ``` ### Nach Erweiterung ```bash ls -lX # Gruppiert nach Dateityp ``` ## Rekursive Auflistung ```bash ls -R # Alle Unterverzeichnisse ls -R /pfad # Ab bestimmtem Pfad ``` ## Nur bestimmte Dateien ### Mit Wildcards ```bash ls *.txt # Alle .txt Dateien ls *.{jpg,png} # Alle .jpg und .png ls file[0-9]* # file0, file1, file2, ... ``` ### Nur Verzeichnisse ```bash ls -d */ # Nur Verzeichnisse ls -ld */ # Mit Details ``` ### Nur Dateien (keine Verzeichnisse) ```bash ls -p | grep -v / ``` ## Farben ```bash ls --color=auto # Farbige Ausgabe ls --color=never # Ohne Farben ls --color=always # Immer Farben (auch in Pipes) ``` Typische Farben: - **Blau**: Verzeichnisse - **Grün**: Ausführbare Dateien - **Cyan**: Symbolische Links - **Rot**: Archive - **Gelb**: Devices ## Spezielle Formate ### Einzelne Spalte ```bash ls -1 # Eine Datei pro Zeile ``` ### Komma-getrennt ```bash ls -m # Komma-getrennte Liste ``` ### Mit Inode-Nummern ```bash ls -i # Zeigt Inode-Nummern ``` ### Numerische UIDs/GIDs ```bash ls -n # User/Group als Zahlen statt Namen ``` ## Dateigrößen analysieren ### Größe einzelner Dateien ```bash ls -lh datei.txt ``` Ausgabe: ``` -rw-r--r-- 1 user staff 12K Nov 7 10:00 datei.txt ``` ### Größe mit stat Nur die Größe in Bytes: ```bash stat -c%s datei.txt ``` Mit Dateiname: ```bash stat -c "%s %n" * ``` ### Größe von Verzeichnissen `ls` zeigt nur die Größe des Verzeichniseintrags (meist 4K), nicht den Inhalt! Für echte Verzeichnisgröße nutze `du`: ```bash du -sh ordner/ # Gesamtgröße du -h --max-depth=1 # Größen aller Unterordner ``` Beispielausgabe: ``` 200M ./Bilder 1.3G ./Videos 50K ./Dokumente 1.5G . ``` Mit 1000er-Schritten statt 1024er: ```bash du -h --si --max-depth=1 ``` ### Nach Größe sortiert ```bash du -sh * | sort -h # Alle Dateien/Ordner sortiert ls -lhS # Nur Dateien, größte zuerst ``` ### Größte Dateien finden Top 10 größte Dateien: ```bash du -ah . | sort -rh | head -n 10 ``` Mit [[find]]: ```bash find . -type f -exec du -h {} + | sort -rh | head -n 10 ``` ### Speicherplatznutzung überwachen Gesamter Speicherplatz: ```bash df -h # Dateisysteme df -h /home # Bestimmter Mountpoint ``` ## Zeitstempel ### Änderungszeit (Standard) ```bash ls -l # Zeigt mtime (modification time) ``` ### Zugriffszeit ```bash ls -lu # Zeigt atime (access time) ``` ### Statusänderungszeit ```bash ls -lc # Zeigt ctime (change time) ``` ### Mit vollständigem Zeitstempel ```bash ls -l --time-style=full-iso ls -l --time-style=long-iso ls -l --time-style=iso ``` ## Praktische Kombinationen ### Übersichtliche Dateiliste ```bash ls -lhA # Details, lesbar, alle außer . und .. ls -lhAtr # Dazu sortiert nach Datum, älteste zuerst ``` ### Schnelle Dateisuche ```bash ls -la | grep datei # Suche in aktueller Liste ``` ### Nur Größen von Verzeichnissen ```bash du -sh */ # Alle Unterverzeichnisse ``` ### Dateien nach Änderung heute ```bash ls -lt | head # Neueste Dateien ``` ### Ausführbare Dateien finden ```bash ls -l | grep '^-..x' ``` ### Große Dateien finden ```bash ls -lhS | head -n 10 # Top 10 größte Dateien ``` ### Versteckte Dateien zählen ```bash ls -A | wc -l ``` ## Nützliche Aliases Setze in `~/.bashrc`: ```bash alias ll='ls -lhA' alias la='ls -A' alias l='ls -CF' alias lt='ls -lhAtr' alias lsize='ls -lhS' ``` ## Zusammen mit anderen Befehlen ### Mit find ```bash find . -name "*.log" -exec ls -lh {} \; ``` ### Mit grep ```bash ls -la | grep "Nov 7" # Dateien von heute ls -la | grep "^d" # Nur Verzeichnisse ``` ### Mit awk ```bash ls -l | awk '{print $9, $5}' # Name und Größe ``` ### Mit xargs ```bash ls *.txt | xargs rm # VORSICHT: Löscht alle .txt ``` ## Fehler vermeiden ### Dateien mit Leerzeichen ```bash # FALSCH ls *.txt | xargs rm # RICHTIG find . -name "*.txt" -print0 | xargs -0 rm ``` ### Alias-Konflikte Viele Systeme haben `ls` als Alias mit `--color=auto` definiert. Um den echten Befehl zu nutzen: ```bash \ls # Umgeht Alias command ls # Umgeht Alias /bin/ls # Direkter Pfad ``` ## Siehe auch - [[find]] - Erweiterte Dateisuche mit Kriterien - [[grep]] - Ausgabe filtern - [[Dateiberechtigungen]] - Bedeutung der Rechtespalten - [[lsblk]] - Block-Geräte statt Dateien - [[du]] - Detaillierte Größenanalyse