Hay muchas situaciones en las que el uso de a *es prácticamente inevitable, por ejemplo, rm -rf *en una carpeta que contiene miles de subcarpetas y archivos.
Pero, ¿qué sucede si desea excluir solo uno o dos archivos o carpetas del rmcomando? Busqué en Google y solo encontré soluciones bastante complicadas, find . -depth -not \( -name 'one' -o -name 'two' \
-o -name 'three' \) -exec rm {} \;como se indica aquí .
¿Existe la posibilidad de hacer esto de una manera más fácil, sin ese desvío find? Por ejemplo, rm -rf --exclude='one' --exclude='two' --exclude='three' *como en rsync o simplemente rm -rf -e 'one','two','three' *?
Tal vez incluso una posibilidad general de excluir cosas de *(por lo demás comandos como cp, mv, ... no tienen que poner en práctica su propia)? ¿Algo así *{'one','two','three'}o algo así?
mv -t /tmp one two three && rm -rf * && mv -t . /tmp/one /tmp/two /tmp/three, pero preferiría una solución que ofrezca la posibilidad de excluir explícitamente algo de *. Seguramente habrá situaciones en las que mover o copiar los archivos a otro destino no será una opción.
findcon la--deleteopción (no es necesario ejecutarrmpara cada archivo. Esa es una sobrecarga innecesaria).