Как правильно удалить рекурсивно все файлы и директории, кроме файлов одного типа?
find /каталог ! -name \*.txt -type f -delete && find /каталог -type d -empty -delete
В МАНе мало вменяемых способов, увы...

Можно так, например - указать расширения, которые нужно удалить

rm *.jpg *.gif

не указывая .txt

А лучше, как парни выше написали через find