La même fonction snapsPurge,
mais en version "améliorée" …

… puisqu'elle demandera cette fois, pour chaque snap listé, une confirmation avant la désinstallation…

…et seulement si on appuie sur o ou O ou y ou Y => ça lancera la désinstallation du snap
sinon, on pourra appuyer sur n'importe quelle autre touche => le snap ne sera pas désinstallé et ça passera au suivant.
snapsPurge(){
    LANG=C snap list --all | awk '/ disabled$/{print $1, $3}' | \
    while read snapname revision
    do
        read -u1 -n1 -p "Remove $snapname $revision ? [y/N]" &&  printf '\033[1M'
        [[ $REPLY = [oOyY] ]] && sudo snap remove "$snapname" --revision="$revision"
    done
}
juste pour enlever un awk pas indispensable
snapsPurge(){
    LANG=C snap list --all \
      | while read -ra snap
        do
           if [[ ${snap[@]} == *disabled ]]
           then
              snapname=${snap[0]}
              revision=${snap[2]}
              read -u1 -n1 -p "Remove $snapname $revision ? [y/N]" &&  printf '\033[1M'
              [[ $REPLY = [oOyY] ]] && sudo snap remove "$snapname" --revision="$revision"
           fi
        done
}
PS : c'est pour quoi faire printf '\033[1M' ?
Watael a écrit…PS : c'est pour quoi faire printf '\033[1M' ? …
Ça sert à effacer la ligne courante (celle affichant la question) et revenir au début de la ligne,
ce qui fait qu'il ne restera que les messages de la commande snap remove …
qui indiqueront les snap qui ont été effectivement désinstallés.

XTerm Control Sequences

CSI Ps M Delete Ps Line(s) (default = 1) (DL).
ESCAPE SEQUENCES

A.III.7 Insertion / Deletion

Delete Line (DL) CSI Pn M Deletes Pn lines starting at the line with the cursor. Lines within the scroll area and below the cursor move up, and blank lines are added at the bottom of the scroll region. The cursor is reset to the first column.
Esc [ pn M
=======
… et d'ailleurs, il faudrait modifier la ligne de commande concernée
pour la remplacer par :
              read -u1 -n1 -p "Remove $snapname $revision ? [y/N]"; printf '\033[1M'
Et puis il y a aussi le fait que si on répond en appuyant sur la touche entrée,
l'effacement ne se fait pas où il faudrait puisqu'il y a un retour à la ligne qui est entré
du coup, ça efface la ligne en dessous, qui suit le retour à la ligne entré
et pour régler ce problème, il faut inhiber l'affichage du caractère qui est entré (comme réponse à la question)
en utilisant l'option s (<=> Silent mode) de la commande read

=======
Ce qui donne (en reprenant les très bons conseils de Watael => Merci beaucoup 🙂 ) :
snapsPurge(){
    LANG=C snap list --all \
      | while read -ra snap
        do
           if [[ ${snap[@]} == *disabled ]]
           then
              snapname=${snap[0]}
              revision=${snap[2]}
              read -u1 -n1 -s -p "Remove $snapname $revision ? [y/N]"; printf '\033[1M'
              [[ $REPLY = [oOyY] ]] && sudo snap remove "$snapname" --revision="$revision"
           fi
        done
}