391 lines
6.3 KiB
Markdown
391 lines
6.3 KiB
Markdown
# 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 [[IT-Know-How/Linux/BASH Basics/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
|
|
|
|
- [[IT-Know-How/Linux/BASH Basics/find]] - Erweiterte Dateisuche mit Kriterien
|
|
- [[IT-Know-How/Linux/BASH Basics/grep]] - Ausgabe filtern
|
|
- [[IT-Know-How/Linux/BASH Basics/Dateiberechtigungen]] - Bedeutung der Rechtespalten
|
|
- [[IT-Know-How/Linux/BASH Basics/lsblk]] - Block-Geräte statt Dateien
|
|
- [[du]] - Detaillierte Größenanalyse
|