Как через cmd и терминал удалить из папки все файлы, кроме выбранных?
в linux bash есть инструмент указания файлов для параметров любых утилит, запускаемых.
например если написать myapp *.txt то в командную строку myapp улетит список txt фалов.

Конкретно по задаче, чтобы удалить все файлы исключая указанные, то можно использовать следующую запись:
rm -f !(file.txt|data.dat)

Для удаления файлов, размер которых больше определенного, можно использовать find (его вообще рекомендуется для многих задач использовать, например исключить каталоги из поиска можно с помощью директивы -not):
find . -type f -size +5M -exec rm -f {} +

upd. для windows cmd все грустнее, на столько издевательски неудобного языка еще поискать нужно, штатно утилит которые бы позволили искать файлы и запускать код по заданной команде на сколько я занаю нет, можно написать цикл for и уже в его теле делать проверки, если имя неравно такому то или размер не больше... можешь не помечать ответом, мне просто лень да и проверить негде уже
нужные команды if, for /? и set /? там будут исчерпывающие примеры
В общем случае - написать скрипт. Для cmd всё несколько замороченнее, и намного меньше возможностей и много ограничений. Но можно из него вызвать powershell и передать ему скрипт-блок с нужными командами. 
В линуксе аналогично - выполняется на bash, но можно ведь вызвать ещё массу разных инструментов, которых уйма под линукс. 
Если нужен однострочник - вторую точно можно сделать однострочником и в винде и в линуксе (гуглить за Вас не стану, это просто). В первой задаче много нюансов - файлы или папки, вложенные они или нет, и сколько их задано - одно дело когда десяток, другое когда сотни тысяч исключений. И подходы к решению будут немного разные.

А вообще, это похоже не на вопрос ("меньше/больше 5мб" - определитесь уже), а на задание в какой-то лабе. Тогда это не сюда.