# ls — Verzeichnisinhalte auflisten

> Verzeichnisinhalte mit ls anzeigen — Rechte, Eigentümer, Größe und Änderungszeit, plus Sortieren, Filtern und nützliche Optionskombinationen.

Source: https://www.jpkc.com/db/cheatsheets/files-text/ls/

<!-- PROSE:intro -->
`ls` listet den Inhalt von Verzeichnissen auf und ist damit eines der Kommandos, das du im Terminal am häufigsten tippst. Ohne Optionen zeigt es nur die Namen, doch erst die Flags machen es richtig nützlich: `-l` liefert die Langform mit Rechten, Eigentümer, Größe und Änderungsdatum, `-a` blendet versteckte Dateien ein, `-h` macht Größenangaben lesbar und `-t` oder `-S` sortieren nach Zeit beziehungsweise Größe. Die hier gezeigten Optionen beziehen sich auf das GNU-`ls` der coreutils, wie es unter Linux Standard ist – das BSD-/macOS-`ls` kennt einige Flags nicht oder belegt sie anders. In der Praxis kombinierst du die Buchstaben einfach, etwa `ls -lahS`, und gehst über Pipes weiter zu `head`, `wc` oder `grep`.
<!-- PROSE:intro:end -->

## Grundlagen

`ls` — Listet Dateien und Verzeichnisse im aktuellen Verzeichnis auf.

```bash
ls
```

`ls <verzeichnis>` — Listet den Inhalt eines bestimmten Verzeichnisses auf.

```bash
ls /var/log
```

`ls <datei1> <datei2>` — Listet bestimmte Dateien oder mehrere Pfade auf.

```bash
ls index.html style.css
```

`ls -l` — Langform. Zeigt Rechte, Eigentümer, Größe und Änderungsdatum.

```bash
ls -l
```

`ls -la` — Langform inklusive versteckter Dateien (Dotfiles).

```bash
ls -la ~/
```

`ls -lh` — Langform mit menschenlesbaren Dateigrößen (K, M, G).

```bash
ls -lh /var/log/
```

## Versteckte Dateien anzeigen

`ls -a` — Zeigt alle Dateien inklusive versteckter (Dotfiles), . und ..

```bash
ls -a
```

`ls -A` — Zeigt versteckte Dateien, aber ohne die Einträge . und ..

```bash
ls -A
```

`ls -d .*` — Listet nur versteckte Dateien und Verzeichnisse auf.

```bash
ls -d .*
```

## Sortieren

`ls -t` — Sortiert nach Änderungszeit, neueste zuerst.

```bash
ls -lt
```

`ls -tr` — Sortiert nach Änderungszeit, älteste zuerst (umgekehrt).

```bash
ls -ltr
```

`ls -S` — Sortiert nach Dateigröße, größte zuerst.

```bash
ls -lSh
```

`ls -Sr` — Sortiert nach Dateigröße, kleinste zuerst.

```bash
ls -lSrh
```

`ls -X` — Sortiert alphabetisch nach Dateiendung.

```bash
ls -lX
```

`ls -v` — Natürliche Sortierung von Versionsnummern in Dateinamen.

```bash
ls -v
```

`ls -U` — Nicht sortieren. Listet die Einträge in Verzeichnisreihenfolge auf.

```bash
ls -U
```

`ls -r` — Kehrt die Sortierreihenfolge um.

```bash
ls -lr
```

## Anzeigeformate

`ls -1` — Listet eine Datei pro Zeile auf.

```bash
ls -1
```

`ls -m` — Listet Dateien als kommagetrennte Werte auf.

```bash
ls -m
```

`ls -C` — Listet in Spalten auf (Standard, wenn die Ausgabe ein Terminal ist).

```bash
ls -C
```

`ls -x` — Listet Einträge zeilenweise statt in Spalten auf.

```bash
ls -x
```

`ls -Q` — Schließt Dateinamen in doppelte Anführungszeichen ein.

```bash
ls -Q
```

`ls --color=auto` — Färbt die Ausgabe ein. Verzeichnisse, Programme und Links erhalten eigene Farben.

```bash
ls --color=auto
```

## Datei-Informationen

`ls -i` — Zeigt die Inode-Nummer jeder Datei.

```bash
ls -li
```

`ls -n` — Langform mit numerischer UID und GID statt Namen.

```bash
ls -ln
```

`ls -o` — Langform ohne Gruppeninformation.

```bash
ls -o
```

`ls -g` — Langform ohne Eigentümerinformation.

```bash
ls -g
```

`ls --full-time` — Langform mit vollständigem Datum und Uhrzeit inklusive Nanosekunden.

```bash
ls --full-time
```

`ls -s` — Zeigt die belegte Blockgröße jeder Datei.

```bash
ls -ls
```

## Verzeichnisse & Rekursion

`ls -d <verzeichnis>` — Listet den Verzeichniseintrag selbst auf, nicht seinen Inhalt.

```bash
ls -ld /var
```

`ls -d */` — Listet nur Verzeichnisse im aktuellen Verzeichnis auf.

```bash
ls -d */
```

`ls -R` — Listet den Inhalt rekursiv durch alle Unterverzeichnisse auf.

```bash
ls -R /etc/nginx
```

`ls -R <verzeichnis> | grep ':$'` — Listet nur die Unterverzeichnisnamen aus der rekursiven Ausgabe auf.

```bash
ls -R /var | grep ':$'
```

## Symbolische Links

`ls -l <link>` — Zeigt, wohin ein symbolischer Link verweist.

```bash
ls -l /usr/bin/python3
```

`ls -L` — Zeigt Informationen über das Ziel eines Symlinks, nicht über den Link selbst.

```bash
ls -lL /usr/bin/python3
```

`ls -F` — Hängt ein Kennzeichen an die Einträge: / Verzeichnis, @ Symlink, * ausführbar.

```bash
ls -F
```

`ls -p` — Hängt das Kennzeichen / nur an Verzeichnisse an.

```bash
ls -p
```

## Filtern mit Globs

`ls *.txt` — Listet alle Dateien mit der Endung .txt auf.

```bash
ls *.txt
```

`ls *.{jpg,png,gif}` — Listet Dateien mehrerer Endungen per Klammer-Expansion auf.

```bash
ls -lh *.{jpg,png,gif}
```

`ls [A-Z]*` — Listet Dateien auf, die mit einem Großbuchstaben beginnen.

```bash
ls [A-Z]*
```

`ls -I '<muster>'` — Schließt Dateien, die auf ein Muster passen, von der Auflistung aus.

```bash
ls -I '*.bak' -I '*.tmp'
```

`ls --hide='<muster>'` — Verbirgt Dateien, die auf das Muster passen (durch -a überschrieben).

```bash
ls --hide='*.pyc'
```

## Häufige Kombinationen

`ls -lahS` — Alle Dateien, Langform, menschenlesbar, nach Größe sortiert.

```bash
ls -lahS
```

`ls -latr` — Alle Dateien, Langform, nach Zeit sortiert (älteste zuerst).

```bash
ls -latr
```

`ls -lhS | head -n 10` — Zeigt die 10 größten Dateien in einem Verzeichnis.

```bash
ls -lhS | head -n 10
```

`ls -lt | head -n 5` — Zeigt die 5 zuletzt geänderten Dateien.

```bash
ls -lt | head -n 5
```

`ls -1 | wc -l` — Zählt die Anzahl der Dateien in einem Verzeichnis.

```bash
ls -1 | wc -l
```

`ls -1 | sort -f` — Listet Dateien ohne Beachtung der Groß-/Kleinschreibung sortiert auf.

```bash
ls -1 | sort -f
```

`ls -d .* 2>/dev/null` — Listet nur Dotfiles auf und unterdrückt Fehler, falls keine existieren.

```bash
ls -ld .* 2>/dev/null
```

`ls -lR | grep '^-' | wc -l` — Zählt alle Dateien rekursiv (ohne Verzeichnisse).

```bash
ls -lR | grep '^-' | wc -l
```

<!-- PROSE:outro -->
## Fazit

`ls` ist trügerisch einfach: Den vollen Nutzen ziehst du erst aus den Optionskombinationen. Für den Alltag genügen meist `ls -lah` (alles, lesbar, mit Details), `ls -ltr` (zeitlich sortiert, Neuestes unten) und das Anhängen einer Pipe zu `head`, `wc -l` oder `grep`. Denk daran, dass die gezeigten Flags GNU-coreutils voraussetzen – auf macOS oder BSD verhalten sich `--full-time`, `-X` oder `--hide` anders oder fehlen ganz; dort hilft oft `gls` aus den coreutils. `ls` zeigt dir Besitz und Rechte nur im Überblick – für die vollständigen Metadaten greifst du zu `stat`, für den echten Dateityp zu `file` und zum Suchen über ganze Bäume zu `find`.

## Weiterführende Links

- [ubuntuusers-Wiki: ls](https://wiki.ubuntuusers.de/ls/) – deutschsprachige Übersicht der wichtigsten Optionen mit Beispielen
- [Wikipedia: ls](https://de.wikipedia.org/wiki/Ls) – Hintergrund zum Unix-Kommando und seiner Geschichte
<!-- PROSE:outro:end -->

## Verwandte Kommandos

- [stat](https://www.jpkc.com/db/cheatsheets/files-text/stat/) – vollständige Datei-Metadaten jenseits von ls -l
- [file](https://www.jpkc.com/db/cheatsheets/files-text/file/) – den echten Dateityp anhand des Inhalts bestimmen
- [find](https://www.jpkc.com/db/cheatsheets/files-text/find/) – Dateien rekursiv suchen und filtern

