Deutsch

Dateien und Verzeichnisse unter Linux per Kommandozeile löschen

4 min
VPS/VDS-Hosting

Am Ende dieser Anleitung können Sie eine Datei, ein leeres Verzeichnis, einen kompletten Verzeichnisbaum sowie Dateien löschen, die Sie nach Name oder Alter filtern. Dabei prüfen Sie jedes Mal vorher das Ziel. In der Kommandozeile gibt es unter Linux keinen Papierkorb: Ein Löschvorgang ist endgültig. Die Vorgehensweise ist deshalb genauso wichtig wie der Befehl selbst.

Voraussetzungen

  • Shell-Zugang zu einem Linux-System (lokal oder per SSH), zum Beispiel auf einem Linux-VPS
  • Ein Benutzer mit Schreibrechten im betroffenen Verzeichnis (oder sudo)
  • Eine aktuelle Sicherung aller wichtigen Daten

Ziel vor dem Löschen prüfen

Wechseln Sie in das richtige Verzeichnis und lassen Sie sich den Inhalt anzeigen. Das dauert zwei Sekunden und verhindert die meisten Unfälle.

Bash
pwd ls -la

Bei einem Muster (Endung, Präfix) zeigen Sie zuerst an, welche Dateien betroffen sind. rm verwendet exakt dieselbe Liste.

Bash
ls -d *.log

Eine Datei löschen

Der Standardbefehl ist rm.

Bash
rm report.txt

Mit -i fragt der Befehl vor dem Löschen nach, mit -v gibt er aus, was er entfernt.

Bash
rm -iv report.txt

Kontrollieren Sie anschließend mit ls report.txt: Die Meldung „No such file or directory“ bestätigt, dass die Datei gelöscht ist.

Mehrere Dateien löschen

Mit Platzhaltern (Wildcards) der Shell sprechen Sie ganze Gruppen von Dateien an. Listen Sie zuerst mit ls auf und löschen Sie danach.

Bash
rm -v *.tmp rm -v photo_{01..05}.jpg

Vermeiden Sie ein nacktes rm * in Verzeichnissen, bei denen Sie sich nicht sicher sind. Beginnt ein Dateiname mit einem Bindestrich, markieren Sie mit -- das Ende der Optionen:

Bash
rm -- -strange-file.txt

Ein leeres Verzeichnis löschen

rmdir entfernt ausschließlich leere Verzeichnisse. Das ist Absicht: Der Befehl dient als Sicherung.

Bash
rmdir old_folder

Um auch übergeordnete Verzeichnisse zu entfernen, die dadurch leer werden:

Bash
rmdir -p project/cache/tmp

Ein Verzeichnis samt Inhalt löschen

Dafür brauchen Sie die rekursive Option -r. Schätzen Sie zuerst ab, was verloren geht.

Bash
du -sh old_project find old_project -type f | wc -l

Anschließend löschen Sie mit Rückfrage:

Bash
rm -ri old_project

Bei Tausenden von Dateien wird die Rückfrage unpraktikabel. Die Option -f schaltet sie ab:

Bash
rm -rf old_project

Setzen Sie in diesem Befehl niemals eine ungeprüfte Variable ein. Bei rm -rf "$DIR"/ zielen Sie auf das Wurzelverzeichnis, wenn $DIR leer ist. Fügen Sie in Skripten set -u hinzu oder verwenden Sie "${DIR:?}": Das bricht die Ausführung ab, sobald die Variable leer ist.

Dateien nach Alter löschen

find filtert nach genauen Kriterien (Name, Typ, Alter, Größe). Das Prinzip: Zuerst ohne Aktion ausführen, dann -delete ergänzen.

Bash
find /var/log/myapp -type f -name "*.log" -mtime +30

Wenn die Liste Ihren Erwartungen entspricht:

Bash
find /var/log/myapp -type f -name "*.log" -mtime +30 -delete

-mtime +30 steht für Dateien, die vor mehr als 30 Tagen zuletzt geändert wurden. Setzen Sie -delete ans Ende: find wertet die Bedingungen von links nach rechts aus, und ein zu früh platziertes -delete löscht alles.

Sensible Dateien sicherer löschen

rm entfernt den Verzeichniseintrag der Datei, nicht unbedingt die Daten auf dem Datenträger. shred überschreibt den Inhalt vor dem Löschen.

Bash
shred -u -v secret.key

Auf SSDs, bei Journaling-Dateisystemen oder Volumes mit Snapshots hat diese Methode Grenzen, weil ältere Daten erhalten bleiben können. Bei wirklich sensiblen Daten bleibt die Verschlüsselung des Datenträgers von Anfang an die verlässliche Lösung.

Häufige Fehler beheben

Permission denied

Sie haben kein Schreibrecht auf das übergeordnete Verzeichnis (dieses steuert das Löschen, nicht die Datei selbst). Prüfen Sie das mit ls -ld DIRECTORY und verwenden Sie bei berechtigtem Anlass sudo:

Bash
sudo rm -v /path/to/file

Operation not permitted, auch mit sudo

Vermutlich trägt die Datei das Attribut „immutable“. Lassen Sie es anzeigen, entfernen Sie es und löschen Sie danach die Datei.

Bash
lsattr file.txt sudo chattr -i file.txt sudo rm file.txt

Argument list too long

Der Platzhalter hat mehr Argumente erzeugt, als das System akzeptiert. Weichen Sie auf find aus, das die Dateien einzeln verarbeitet:

Bash
find . -maxdepth 1 -type f -name "*.tmp" -delete

Directory not empty oder Device or resource busy

Bei rmdir ist die erste Meldung normal: Das Verzeichnis enthält Dateien, auch versteckte (ls -A). Wird es von einem Mount-Punkt oder einem Prozess verwendet, ermitteln Sie den Verursacher mit lsof +D DIRECTORY oder findmnt und geben ihn frei, bevor Sie es erneut versuchen.

Zum risikofreien Üben eignet sich eine Wegwerf-Instanz: Auf einem VPS können Sie ein Testverzeichnis anlegen und sich folgenlos vertun. Weitere Anleitungen dieser Art finden Sie im Bereich Tutorials.

FAQ

Lässt sich eine mit rm gelöschte Datei wiederherstellen?

Selten und ohne Garantie. Tools wie extundelete oder testdisk finden manchmal noch Daten, wenn Sie sofort aufhören, auf den Datenträger zu schreiben. Verlässlichen Schutz bietet nur eine Sicherung.

Was ist der Unterschied zwischen rm -r und rm -rf?

rm -r löscht rekursiv, fragt aber bei schreibgeschützten Dateien nach. rm -rf erzwingt das Löschen und ignoriert nicht vorhandene Dateien ohne Meldung. Setzen Sie es nur ein, wenn Sie das Ziel bereits geprüft haben.

Wie lösche ich ein Verzeichnis, dessen Name Leerzeichen enthält?

Setzen Sie den Namen in Anführungszeichen oder maskieren Sie die Leerzeichen: rm -r "My folder" oder rm -r My\ folder. Andernfalls behandelt die Shell jedes Wort als eigenes Element.

Gibt es einen Papierkorb für die Kommandozeile?

Ja, mit dem Paket trash-cli (Befehl trash-put). Es verschiebt Elemente in den Papierkorb des Benutzers, statt sie zu löschen. Auf einem Server ist es selten vorinstalliert: Gewöhnen Sie sich daher an, vor dem Löschen aufzulisten.

Bleiben Sie über die neuesten Angebote, Rabatte und Sonderaktionen informiert.

Aktionen ansehen

Wir verwenden Cookies

Wir verwenden Analyse-Cookies, um Ihre Erfahrung auf unserer Website zu verbessern. Es werden keine Daten an Dritte verkauft. Mehr erfahren Sie in unserer Datenschutzerklärung.