Se você estiver usando o bash:
shopt -s extglob
rm -- !(file1|file2|file3)
A primeira linha apenas ativa a correspondência estendida de padrões e, depois disso, usamos uma delas:
!(pattern-list)
matches anything except one of the given patterns
e a lista de padrões é uma lista de um ou mais padrões separados por |
.
Ou com zsh
setopt extendedglob
rm -- ^(file1|file2)
Ou mais portátil, usando find
:
find . -maxdepth 1 ! -name 'file1' ! -name 'file2' -type f -exec rm -v {} +