Linux: Ordner löschen, Datei umbenennen (rm, mv, ln)

Linux 13 Min. Lesezeit

Unter Linux können Sie Dateien und Ordner mit den Befehlen rm und rmdir löschen, mit dem Befehl mv umbenennen oder verschieben und mit dem Befehl ln Verknüpfungen (Links) zu ihnen erstellen. Die Befehle sind einfach, bergen jedoch einige Fallstricke: Das Löschen kann nicht rückgängig gemacht werden, der Befehl mv überschreibt die Zieldatei ohne Rückfrage, und beim Löschen eines symbolischen Links kann ein falsch platziertes Schrägstrichzeichen auch das Ziel des Links leeren.

Die in diesem Artikel beschriebenen Befehle haben wir im November 2026 auf den Systemen AlmaLinux 10.2 und Ubuntu 26.04 getestet. Sie funktionieren ebenso auf einem eigenen KVM-VPS wie auch in der cPanel-Oberfläche Terminal. Einen kurzen Überblick über die grundlegenden Befehle bietet der Artikel über die grundlegenden Linux-Befehle.

Datei löschen: rm

rm fajl.txt
rm fajl1.txt fajl2.txt
rm *.log

Unter Linux gibt es keinen Papierkorb: Was mit dem Befehl rm gelöscht wird, verschwindet sofort und kann über die Befehlszeile nicht wiederhergestellt werden. Erstellen Sie vor dem Löschen wichtiger Dateien eine Sicherungskopie (siehe: Sichern und Wiederherstellen von Daten unter Linux).

Nützliche Schalter:

  • -i: Vor jedem Löschvorgang wird eine Bestätigung abgefragt (rm: remove regular file 'fajl.txt'?), die Antwort y löscht die Datei, die Antwort n behält die Datei bei;
  • -I: Es wird nur einmal nachgefragt, wenn mehr als drei Dateien oder ein Verzeichnis rekursiv gelöscht werden (rm: remove 4 arguments?); es werden weniger Abfragen gestellt, doch bei einem falsch eingegebenen Platzhalterzeichen wird der Vorgang dennoch unterbrochen;
  • -v: gibt an, was gelöscht wurde (removed 'fajl.txt');
  • -f: Es werden keine Abfragen gestellt und keine Fehlermeldungen zu nicht vorhandenen Dateien ausgegeben.

Ist eine Datei schreibgeschützt (z. B. chmod 444), fragt der Befehl rm im Terminal: rm: remove write-protected regular empty file 'vedett.txt'?. Die Option -f unterdrückt auch diese Abfrage. Erhält der Befehl die Eingabe nicht über das Terminal (sondern in einem Skript oder einer Cron-Aufgabe), löscht er die schreibgeschützte Datei ohne Rückfrage.

Unter AlmaLinux ist in der Datei .bashrc des Root-Benutzers standardmäßig die Zeile alias rm='rm -i' enthalten, weshalb der Befehl rm nach sudo -i bei jeder Datei nachfragt. sudo rm hingegen verwendet diesen Alias nicht und fordert keine Bestätigung an; unter Ubuntu 26.04 verfügt der Root-Benutzer ebenfalls nicht über einen solchen Alias. Das Erstellen eigener Aliase wird im Artikel über Bash-Aliase behandelt.

Verzeichnis samt Inhalt löschen: rm -r

Ein leeres Verzeichnis wird mit dem Befehl rmdir gelöscht. Befindet sich etwas in dem Verzeichnis, wird eine Fehlermeldung ausgegeben, und auch der einfache Befehl rm löscht das Verzeichnis nicht:

$ rmdir regi-oldal
rmdir: failed to remove 'regi-oldal': Directory not empty
$ rm regi-oldal
rm: cannot remove 'regi-oldal': Is a directory

Der Befehl mit dem Schalter -r (rekursiv) löscht den Ordner samt seinem gesamten Inhalt:

rm -r regi-oldal
rm -rv regi-oldal    # gibt aus, was gelöscht wurde
rm -rI regi-oldal    # fragt vorher einmal nach

Der Befehl rmdir löscht keine nicht leeren Ordner; der Befehl rm -rv löscht diese zusammen mit ihrem Inhalt und listet die gelöschten Dateien auf.

Die Gefahren des Befehls „rm -rf“

Der Befehl rm -rf löscht ohne Rückfrage und unter Unterdrückung von Fehlermeldungen alles, was ihm übergeben wird. Die meisten Probleme treten nicht beim Befehl selbst auf, sondern bei dem übergebenen Pfad:

  • Leerzeichen in einem Pfad: Der Befehl rm -rf /var/www/regi oldal enthält zwei Pfade, nämlich das Verzeichnis /var/www/regi und die im aktuellen Verzeichnis befindliche Datei mit dem Namen oldal. Setzen Sie den Namen, der ein Leerzeichen enthält, in Anführungszeichen: rm -rf "/var/www/regi oldal".
  • Leere Variable in einem Skript: Ist die Variable $ORDNER leer, würde der Befehl rm -rf "$ORDNER"/* den Inhalt des Stammverzeichnisses löschen. Verwenden Sie in Skripten das Format ${ORDNER:?}, das bei einer leeren Variable das Skript mit einer Fehlermeldung abbricht (ORDNER: parameter null or not set): rm -rf "${ORDNER:?}"/*.
  • Relativer Pfad, der im falschen Verzeichnis angegeben wurde: Der Befehl rm -rf * löscht immer im aktuellen Verzeichnis. Zuvor zeigt der Befehl pwd an, wo Sie sich befinden, und der Befehl ls zeigt an, was gelöscht würde.

Das GNU-rm-Programm weigert sich grundsätzlich, das Stammverzeichnis rekursiv zu löschen (rm: it is dangerous to operate recursively on '/'), doch dies schützt lediglich den Pfad /, nicht jedoch die darunter liegenden Ordner.

Wenn Sie sich nicht sicher sind, benennen Sie den Ordner zunächst um oder verschieben Sie ihn (z. B. mv regi-oldal regi-oldal.torolni), anstatt ihn zu löschen, und löschen Sie ihn erst nach einigen Tagen.

Permission denied

rm: cannot remove '/srv/vedett/x': Permission denied

Um eine Datei zu löschen, benötigen Sie Schreibrechte für den Ordner, in dem sich die Datei befindet; die Berechtigungen der Datei selbst spielen dabei keine Rolle. In diesem Fall hilft auch die Option -f nicht weiter. Wenn die Datei tatsächlich gelöscht werden soll und es sich um eine Systemdatei oder die Datei eines anderen Benutzers handelt, ist der Befehl sudo rm erforderlich. Die Funktionsweise der Berechtigungen wird im Artikel über die Befehle chmod und chown erläutert.

Dateien mit seltsamen Namen

Ein Name, der mit einem Bindestrich beginnt, wird als rm-Schalter interpretiert:

$ rm -x.txt
rm: invalid option -- 'x'
Try 'rm ./-x.txt' to remove the file '-x.txt'.

Es gibt zwei Möglichkeiten: das vor dem Namen angefügte ./ oder das --, woraufhin der Befehl alles Nachfolgende nicht mehr als Schalter interpretiert:

rm ./-x.txt
rm -- -x.txt

Setzen Sie Namen, die Leerzeichen oder Sonderzeichen enthalten, in Anführungszeichen (rm "szep fajl.txt") oder verwenden Sie die Tab-Taste, die den Namen mit den erforderlichen Escape-Zeichen ergänzt.

Wird der Speicherplatz freigegeben?

Wenn eine große Datei (beispielsweise eine Protokolldatei) von einem laufenden Programm noch geöffnet ist, wird der Speicherplatz nach dem Löschen erst freigegeben, sobald das Programm die Datei schließt. In diesem Fall zeigt der Befehl df weiterhin an, dass die Festplatte voll ist. Wie Sie solche Dateien finden und wie Sie ein Protokoll leeren können, ohne es zu löschen, wird im Artikel Die Festplatte ist voll, aber du zeigt nichts an erläutert.

Sicheres Löschen: shred

Der Inhalt einer gelöschten Datei bleibt auf der Festplatte so lange lesbar, bis er überschrieben wird. Der Befehl shred überschreibt die Datei vor dem Löschen mit zufälligen Daten:

shred -u -v titkos.txt

Laut der Dokumentation zu shred kann bei Journaling-Dateisystemen, SSDs und virtuellen Maschinen nicht garantiert werden, dass alle Instanzen überschrieben werden, da das Speichersystem die Daten möglicherweise auch an anderer Stelle speichert. Bei vertraulichen Daten ist daher die vollständige Festplattenverschlüsselung eine zuverlässigere Lösung.

Umbenennung und Verschiebung: mv

Unter Linux gibt es keinen separaten Befehl zum Umbenennen: Auch das Umbenennen übernimmt der Befehl mv.

mv regi-nev.txt uj-nev.txt        # umbenennen
mv fajl.txt /var/www/html/        # in einen anderen Ordner verschieben
mv fajl1.txt fajl2.txt mentes/    # mehrere Dateien in einen Ordner
mv regi-mappa uj-mappa            # Ordner umbenennen

So benennen Sie auch einen Ordner um – ohne den Schalter -r.

Das Programm mv überschreibt die Zieldatei standardmäßig ohne Vorwarnung. Wenn die Datei uj-nev.txt bereits existiert, geht deren Inhalt verloren. Dies können Sie mithilfe von Schaltern verhindern:

  • -i: fragt nach der Überschreibung (mv: overwrite 'b.txt'?);
  • -n: überschreibt niemals eine bereits vorhandene Datei;
  • -b: Vor dem Überschreiben wird die alte Zieldatei unter einem Namen mit der Endung ~ beibehalten (b.txt~);
  • -v: gibt an, was durchgeführt wurde (renamed 'a.txt' -> 'c.txt').

Wenn das Ziel ein bereits vorhandener Ordner ist, verschiebt der Befehl mv die Quelle dorthin: Nach dem Befehl mv dir1 dir2 befindet sich der Ordner unter dir2/dir1, nicht unter dem Namen dir2. Ein nicht leerer Ordner kann nicht in einen gleichnamigen, ebenfalls nicht leeren Ordner verschoben werden (mv: cannot overwrite 'e/a': Directory not empty); zum Zusammenführen des Inhalts zweier Ordner verwenden Sie bitte rsync oder cp -a.

Verschiebung auf ein anderes Dateisystem

Innerhalb desselben Dateisystems ändert der Befehl mv lediglich den Namen: Selbst das Verschieben eines mehrere Gigabyte großen Ordners erfolgt sofort, und die Inodes der Dateien ändern sich nicht. Befindet sich das Ziel auf einer anderen Festplatte oder Partition (beispielsweise auf einer separat gemounteten Festplatte oder unter Ubuntu im im Arbeitsspeicher befindlichen Verzeichnis /tmp), kopiert der Befehl mv die Dateien tatsächlich und löscht anschließend die Quelldateien:

$ mv -v /dev/shm/z.txt ~/proba/
copied '/dev/shm/z.txt' -> '/home/admin/proba/z.txt'
removed '/dev/shm/z.txt'

Bei großen Datenmengen dauert dies lange, und wird der Vorgang unterbrochen, kann das Ziel unvollständig sein. Bei großen Ordnern ist es sicherer, diese zunächst zu kopieren (mit rsync -a oder cp -a), die Kopie zu überprüfen und erst danach die Quelldateien zu löschen. Die Einzelheiten zum Kopieren werden im Artikel über das Kopieren von Dateien beschrieben.

Unterschied zwischen den Befehlen „cp -a“ und „mv“

  mv (auf demselben Dateisystem) cp -a
Bleibt die Quelle erhalten? nein Ja
Geschwindigkeit sofort Das hängt von der Größe ab
Benötigen Sie dafür freien Speicherplatz? nein Ja, die volle Größe
Rechte, Eigentümer, Zeitstempel unverändert behält (den Eigentümer nur als Root)
Symbolische Links unverändert kopiert sie als Links

Der einfache Befehl cp (ohne das -a) kopiert den Inhalt des Ziels anstelle eines symbolischen Links, und das Datum der Dateien entspricht dem Zeitpunkt der Kopie.

SELinux (AlmaLinux, Rocky Linux): Der Befehl mv übernimmt die SELinux-Kennzeichnung der Datei, während der Befehl cp der neuen Datei die Kennzeichnung des Zielverzeichnisses zuweist. Im Test erhielt die aus dem Home-Verzeichnis in das Webserver-Verzeichnis verschobene Datei die Kennzeichnung user_home_t, woraufhin nginx einen 403-Fehler ausgab; die kopierte Datei funktionierte hingegen einwandfrei. In diesem Fall stellt der Befehl sudo restorecon -v fajl die Kennzeichnung wieder her; Einzelheiten finden Sie im Artikel zur Behebung von SELinux-Fehlern vom Typ Permission denied.

Mehrere Dateien gleichzeitig umbenennen

Mit dem Befehl mv können Sie jeweils nur eine Datei umbenennen. Für mehrere Dateien können Sie den Befehl rename oder eine kurze Bash-Schleife verwenden. Es gibt zwei völlig unterschiedliche Varianten des Befehls rename:

AlmaLinux, Rocky Linux: rename aus util-linux

Unter AlmaLinux ist der Befehl rename Teil des Pakets util-linux und standardmäßig installiert. Er führt eine einfache Textersetzung durch: rename VON NACH DATEIEN.

rename -n -v .jpeg .jpg *.jpeg   # zeigt nur, was passieren würde
rename -v .jpeg .jpg *.jpeg
`kep1.jpeg' -> `kep1.jpg'
`kep2.jpeg' -> `kep2.jpg'

Testlauf mit dem Schalter -n: Zeigt die Änderungen an, führt jedoch keine Umbenennungen durch. Pro Datei wird nur das erste Vorkommen ersetzt (aus aa-aa.txt wird ba-aa.txt); alle Vorkommen werden mit dem Schalter -a ersetzt.

Ubuntu, Debian: rename in der Perl-Variante

Unter Ubuntu und Debian ist der Befehl rename im Paket rename enthalten (sudo apt install rename; auf dem Ubuntu 26.04 Cloud-Image war er nicht installiert). Diese Variante erwartet einen regulären Ausdruck in Perl und ist daher wesentlich flexibler:

# Probelauf: Unterstrich statt Leerzeichen, .jpg statt .JPEG
rename -n 's/ /_/; s/\.JPEG$/.jpg/' *

# Ausführen
rename -v 's/ /_/; s/\.JPEG$/.jpg/' *

# Alle Leerzeichen ersetzen (g = global)
rename 's/ /_/g' *

# In Kleinbuchstaben umwandeln
rename 'y/A-Z/a-z/' *

Massenumbenennung mit dem Perl-Befehl rename unter Ubuntu: zunächst ein Testlauf mit dem Parameter -n, anschließend die Ausführung mit dem Parameter -v

Wenn Sie unter Ubuntu die util-linux-Variante (rename .jpeg .jpg *.jpeg) angeben, bricht die Perl-Variante mit einem Syntaxfehler ab (syntax error at line 1) und führt keine Umbenennung durch. Die util-linux-Variante ist unter Ubuntu unter dem Namen rename.ul verfügbar. Unter AlmaLinux 10 konnten wir die Perl-Variante weder in den Standard-Repositories noch im EPEL-Repository finden.

Bash-Schleife: funktioniert überall

Falls Sie nicht wissen, welcher rename-Befehl auf dem Rechner vorhanden ist, funktioniert eine Bash-Schleife auf jeder Distribution:

# Endung ändern: .JPG -> .jpg
for f in *.JPG; do mv -v -- "$f" "${f%.JPG}.jpg"; done

# Dateinamen in Kleinbuchstaben
for f in *[A-Z]*; do mv -v -- "$f" "$(echo "$f" | tr 'A-Z' 'a-z')"; done

Dank der Anführungszeichen um "$f" funktioniert dies auch bei Namen, die Leerzeichen enthalten, während -- Namen schützt, die mit einem Bindestrich beginnen. Vor der Ausführung in der Produktionsumgebung zeigt ein vor mv gesetztes echo an, was die Schleife ausführen würde.

Ein Link ist ein zweiter Name, der auf eine Datei oder einen Ordner verweist. Es gibt zwei Arten davon.

Ein symbolischer Link ist eine kleine Datei, die einen Pfad speichert. Er kann auf einen Ordner, auf eine Datei in einem anderen Dateisystem oder sogar auf ein nicht existierendes Ziel verweisen.

ln -s ZIEL LINKNAME
ln -s /var/www/pelda.hu/public_html ~/public_html
ln -s /etc/nginx/sites-available/pelda.hu /etc/nginx/sites-enabled/

Der Befehl ls -l zeigt den Link mit dem Buchstaben l und einem Pfeil an (current -> releases/2026-11-01).

Bei einem relativen Link ist das Ziel relativ zum Standort des Links zu verstehen, nicht relativ zu dem Verzeichnis, in dem der Befehl ausgeführt wurde. Der Befehl ln -s releases/v1 a/rossz erstellt einen defekten Link, der auf a/releases/v1 verweist; korrekt wäre ln -s ../releases/v1 a/jo. Der Befehl ln -sr releases/v1 a/rel (relativ) berechnet den korrekten relativen Pfad selbst (a/rel -> ../releases/v1). Bei einem absoluten Pfad (beginnend mit /) tritt dieses Problem nicht auf.

Das Umleiten eines bestehenden Links auf ein anderes Ziel ist eine häufige Aufgabe, beispielsweise bei der Installation (der current-Link verweist auf den Ordner der aktuellen Version). Bei einem Link, der auf einen Ordner verweist, führt der einfache Befehl ln -sf nicht das aus, was Sie erwarten würden: Er erstellt einen neuen Link im Zielordner des alten Links, während der current-Link unverändert bleibt. Dazu ist der Schalter -n erforderlich, der den bestehenden Link nicht nachverfolgt, sondern ersetzt:

ln -sfn releases/2026-11-08 current

Erstellen eines symbolischen Links, Umleitung mit dem Befehl ln -sfn und Überprüfung des Ziels mit dem Befehl readlink -f

readlink current       # der gespeicherte Pfad: releases/2026-11-08
readlink -f current    # der vollständige, aufgelöste Pfad
ls -l current

Defekte Links (deren Ziel nicht mehr existiert) können mit dem Befehl find gesucht werden:

find /var/www -xtype l

Weitere Suchmöglichkeiten stellt der Artikel mit Beispielen für den Befehl find vor.

Das Löschen des Links hat keine Auswirkungen auf das Ziel:

rm current
unlink current

Fügen Sie nach dem Namen des Links keinen Schrägstrich hinzu. current/ bezeichnet bereits das Zielverzeichnis, nicht den Link. Der Befehl rm current/ führt zu einer Fehlermeldung (Is a directory), während rm -r current/ im Test den gesamten Inhalt des Zielverzeichnisses gelöscht hat und nur den Link selbst belassen hat (rm: cannot remove 'current/': Not a directory). Der Befehl rm -rf current/ hat das Zielverzeichnis ebenfalls geleert und aufgrund der Option -f nicht einmal eine Fehlermeldung ausgegeben. Die Tab-Taste fügte im Test auf beiden Systemen einen Schrägstrich hinter den Namen eines auf einen Ordner verweisenden Links hinzu (ls current/); überprüfen Sie daher vor dem Löschen stets die Befehlszeile.

Ein ln ohne das -s erstellt einen Hardlink: einen zweiten Namen für dieselbe Datei mit derselben Inode-Nummer.

ln eredeti.txt masodik.txt
ls -li eredeti.txt masodik.txt

Der Inhalt der Datei bleibt so lange erhalten, wie mindestens ein Name existiert: Nach dem Löschen der Datei eredeti.txt ist die Datei masodik.txt weiterhin lesbar. Ein Hardlink kann nur innerhalb desselben Dateisystems erstellt werden, jedoch nicht für Verzeichnisse (ln: releases: hard link not allowed for directory). In der Praxis sind symbolische Links häufiger anzutreffen; die Auswirkungen von Hardlinks auf die Festplattennutzung werden im Artikel zum Befehl du beschrieben.

Zusammenfassung

Aufgabe Befehl
Datei löschen rm fajl
Leeren Ordner löschen rmdir mappa
Ordner mit seinem Inhalt löschen rm -r mappa
Löschen mit Bestätigung rm -ri mappa oder rm -rI mappa
Löschen einer Datei, deren Name mit einem Bindestrich beginnt rm -- -fajl
Umbenennung mv regi uj
Umbenennung ohne Überschreiben mv -n regi uj
Massenumbenennung (Ubuntu, Debian) rename 's/regi/uj/' *
Massenumbenennung (AlmaLinux) rename regi uj *
Symbolischer Link ln -s cel link
Weiterleitung eines Links ln -sfn ujcel link
Ziel des Links readlink -f link
Link löschen rm link (ohne Schrägstrich)
Zurück: Linux-Artikel (76)