Sí, puedes usar más de un patrón con find
:
$ find -name 'master-*' \! -name 'master-2018*' -print0 -prune |
xargs -0 echo rm -fr
(quitar el echo
si está satisfecho con el simulacro)
Debes agregar un -maxdepth 1
predicado justo después de find
si solo desea eliminar archivos del directorio actual, es decir, master-1991
pero no subdir/master-1991
.
En bash:
shopt -s extglob
echo rm master-!(2018*)
Eliminar el echo
si parece correcto.
Lo anterior utiliza la función de globbing extendida de bash para hacer coincidir los archivos que comienzan con master-
pero que no tienen 2018
inmediatamente siguiente, luego seguido por cualquier cosa (*
).