Je kunt find gebruiken. Bijv,
find . -maxdepth 1 -type f ! -name '*.txt' -print0 | xargs -0 rm
verwijderd alle bestanden in de huidige map, behalve txt bestanden.
De . is om te zoeken in de huidige map, -maxdepth geeft aan of subdirectories meegenomen worden, -type f zoekt alleen naar bestanden (geen mappen), ! draait de volgende optie om, -name is om op bestandsnaam te filteren (-iname doet hetzelfde, maar niet hoofdlettergevoelig), -print0 regelt spaties in bestandsnamen. De uitkomst van find pipe je vervolgens in xargs wat de resultaten doorstuurd naar rm, de -0 is gelinkt aan -print0 voor spaties.
Om te testen is het slim om echo te gebruiken ipv rm, zodat je eerst kunt zien of de juiste bestanden weergegeven worden. Eventueel kun je icm echo ook de ! weghalen om te zien of find dan de juiste bestanden weergeeft die behouden moeten worden.
Het is soms wel riskant om op deze manier bestanden te verwijderen, want er is standaard geen prullenbak met rm, al kun je dat natuurlijk zelf wel instellen.
[edit]added '' around *.txt.[/edit]