Esses comandos não funcionaram porque os padrões de curingas omitem arquivos de ponto (arquivos cujo nome começa com o caractere . ) a menos que o ponto apareça explicitamente no padrão. Portanto, *.un~ corresponde a yourfile.txt.un~ , mas não .myfile.txt.un~ , enquanto .*.un~ corresponde a .myfile.txt.un~ .
Você deve ser capaz de usar find(1) para isso ( find de correspondência de caractere curinga não trata especialmente os arquivos de ponto):
find / -name "*.un~" -not -path "~/.tmp/*" -delete
Isso diz ao find para pesquisar / para todos os arquivos correspondentes a *.un~ que não estão em ~/.tmp e excluí-los. Se você retirar -delete , ele exibirá uma lista, para que você possa verificar e certificar-se de que não irá excluir as coisas erradas. Você também pode querer jogar -mount lá para impedir que ele procure em outros sistemas de arquivos que você montou