Platzhalter sind für das Kommando rm generell in Linux ein Problem. Muster mit Platzhaltern wie beispielsweise *.tmp werden stattdessen von der Shell interpretiert. Zwar kann der Befehl
rm *.tmp
find ./ -type f ! -iname „*.txt“ -deletedeshalb alle Dateien im aktuellen Ordner entfernen, die auf „.tmp“ enden, aber das Muster ist nicht umkehrbar, um bestimmte Dateitypen vom Löschen auszunehmen. Besser ist, das flexible Kommando „find“ für Suchmuster und Löschaktionen einzuspannen. Folgendes Kommando hilft, um mit find alle Dateien bis auf jene mit der Endung „.txt“ zu löschen:
find ./ -type f ! -iname "*.txt" -delete
Das vorangestellte Ausrufezeichen kehrt den nachfolgenden Suchbegriff um, der hier über den Dateinamensteil „*.txt“ angegeben ist.
Die Auswahl mehrerer Dateimasken ist ebenfalls möglich, macht die Syntax aber etwas komplexer: Mit dem Befehl
find ./ -type f ! \( -iname "*.ht ml" -o -iname "*.css" \) -delete
löschen Sie beispielsweise alles im gegenwärtigen Verzeichnis, ausgenommen die Dateien mit den Endungen „.html und „.css“.
Du musst angemeldet sein, um kommentieren zu können.