Linux Bash: Löschen mit Dateityp-Filter

Print Friendly, PDF & Email


Linux TuxPlatzhalter 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“.

GD Star Rating
loading...

Dieser Beitrag wurde unter Linux, Tips & HowTo's abgelegt und mit , , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.