Eu vim com esse ótimo comando simples e fácil:
rm !(a.txt)
você pode usar! como uma negação
Teste a glob com eco primeiro, por exemplo,
echo !(a.txt)
Se isso não funcionar, para bash
você pode precisar ativar isso com
shopt -s extglob
Se você quiser manter os dois a.txt
e b.txt
, use !(a.txt|b.txt)
ou !([ab].txt)
.
Editar:
para fazer rm
funcionar recursivamente, basta adicionar -r
like
rm -r !(a.txt)
e também, está trabalhando com pasta. só precisa mudar o nome para o nome do dir, como por a_dir
rm -r !(a_dir)