Ci sono molte situazioni in cui l'uso di a *è praticamente inevitabile, ad esempio rm -rf *in una cartella che contiene migliaia di sottocartelle e file.
Ma cosa succede se si desidera escludere solo uno o due file o cartelle da rm comando? Ho cercato su Google e ho trovato solo soluzioni abbastanza complicate find . -depth -not \( -name 'one' -o -name 'two' \
-o -name 'three' \) -exec rm {} \;come indicato qui .
Esiste la possibilità di farlo in un modo più semplice, senza quella deviazione find ? Ad esempio rm -rf --exclude='one' --exclude='two' --exclude='three' *come in rsync o semplicemente rm -rf -e 'one','two','three' *?
Forse anche un possibilità generale di escludere le cose da *(in modo che altri comandi come cp, mv, ... non c'è bisogno di implementare il proprio)? Qualcosa del genere *{'one','two','three'}?
mv -t /tmp one two three && rm -rf * && mv -t . /tmp/one /tmp/two /tmp/three, ma preferirei una soluzione che dà la possibilità di escludere esplicitamente qualcosa da *. Ci saranno sicuramente situazioni in cui lo spostamento o la copia dei file in un'altra destinazione non sarà un'opzione.
findcon l'--deleteopzione (non è necessario eseguirermper ogni file. Questo è inutile sovraccarico).