Mit rm löschst Du superschnell einzelne oder mehrere Dateien. Gezielt kannst Du Dateien nach Endungen auch gleichzeitig in mehreren Unterordnern löschen. Dazu kombinierst Du rm mit dem Befehl find. Bevor Du Dateien endgültig löschst, kannst Du Dir vorher zur Sicherheit mit echo die Dateien anzeigen, die gelöscht werden.

rm ist der Standardbefehl, um Dateien und auch Ordner samt Inhalt zu löschen.

rm ist gefährlich, weil der Befehl die Dateien endgültig löscht. Er verschiebt die Dateien nicht vorher noch in den Papierkorb. Darum Vorsicht!

Ordner nach Dateien mit definierter Dateiendung durchsuchen und löschen

Damit Du Dateien mit einer definierten Dateiendung auch in Unterordnern löschen kannst, kombiniert man rm mit find. find sucht zuerst die Dateien und führt dann mit der Option exec einen Befehl aus. In unserem Fall ist das der Löschbefehl rm.

Die Formel sieht dann wie folgt aus:

$ find $STARTVERZEICHNIS -name '*.$DATEIENDUNG' -exec echo rm -rv {} \;

Mit $STARTVERZEICHNIS definierst Du den Startpunkt der Suche, z.B. das aktuelle Verzeichnis mit ./. Die Variable $DATEIENDUNG ersetzt Du mit einer Dateiendung, z.B. .m3u (Endung für MP3-Playlist). Damit der Befehl nicht direkt alle gefundenen Dateien löscht, geben wir erst einmal das Ergebnis mit echo aus. Bist Du mit den Ergebnissen zufrieden, löschst Du einfach echo und rm löschst unwiderruflich alle gefundenen Dateien. Die geschweifte Klammern {} stehen als Platzhalter für die von find gefundenen Dateinamen. Das Zeichen ; terminiert den von find aufzurufenden Befehl. Damit es nicht unbeabsichtigt von der Shell interpretiert wird, muss der Befehl mit \.

So löschst Du mit dem folgenden Befehl alle Dateien mit der Endung .m3u in sämtlichen Unterordnern ausgehend vom Verzeichnis, in welchem Du Dich gerade befindest. Damit der Befehl wirklich alle .m3u-Dateien löschst, musst Du noch echo entfernen.

$ find ./ -name '*.m3u' -exec echo rm -rv {} \;

Um Dateien mit unterschiedlichen Endungen einzuschließen, kannst du die or Verknüpfung von find nutzen:

$ find ./ -name '*.jpg' -or -name '*.jpeg' -exec echo rm -rv {} \;