Elimine varios patrones de archivos usando un comando (buscar)

Elimine varios patrones de archivos usando un comando (buscar)

Estoy intentando findeliminar archivos en el directorio y subdirectorios actuales (recursivamente) que coinciden con diferentes patrones e imprimo los archivos coincidentes para stdoutsaber cuáles se eliminan.

Por ejemplo, quiero hacer coincidir todos los archivos que comienzan con '&' y todos los archivos que comienzan y terminan con '$'.
Intenté usar:

find . -type f -name '&*' -or -type f -name '$*$' -exec rm -v {} \;

pero rmse aplica solo en el último partido ('$*$').
Así lo he intentado:

find . -type f -name '&*' -or -type f -name '$*$' -delete

Pero esto no sólo coincide con el último patrón, sino que no genera los archivos eliminados.
Sé que puedo hacerlo:

rm -v ``find -type f -name '&*' -or -type f -name '$*$'``

pero realmente me gustaría evitar este tipo de enfoque y hacerlo con findmando.

¿Algun consejo?
Gracias de antemano.

Respuesta1

Tu problema es queejecutivosolo se aplica al segundo patrón, intente poner paréntesis alrededor de sus condiciones de búsqueda para solucionarlo:

find . \( -type f -name '&*' -or -type f -name '$*$' \) -exec rm -v {} \;

Lo que hay que tener en cuenta es que esto no es un error, sino una característica, por lo que puedes hacer algo como esto:

find -type f -name '&*' -exec mv '{}' ./backup ';' -or -type f -name '$*$' -exec rm -v '{}' ';'

si lo necesitas

Respuesta2

Aunquezepelínla respuesta es correcta, también encontré esta solución:

encontrar . -escriba f \( -name '&*' -o -name '$*$' \) -print -delete

información relacionada