En realidad, está canalizando rmla salida a la entrada de find. Lo que desea es utilizar la salida de findcomo argumentos para rm:
find -type f -name '*.sql' -mtime +15 | xargs rm
xargses el comando que "convierte" su entrada estándar en argumentos de otro programa o, como lo ponen con mayor precisión en la manpágina,
construir y ejecutar líneas de comando desde la entrada estándar
Tenga en cuenta que si los nombres de archivo pueden contener caracteres de espacio en blanco, debe corregir eso:
find -type f -name '*.sql' -mtime +15 -print0 | xargs -0 rm
Pero en realidad, findtiene un atajo para esto: la -deleteopción:
find -type f -name '*.sql' -mtime +15 -delete
Tenga en cuenta las siguientes advertencias en man find:
Warnings: Don't forget that the find command line is evaluated
as an expression, so putting -delete first will make find try to
delete everything below the starting points you specified. When
testing a find command line that you later intend to use with
-delete, you should explicitly specify -depth in order to avoid
later surprises. Because -delete implies -depth, you cannot
usefully use -prune and -delete together.
PD Tenga en cuenta que canalizar directamente rmno es una opción, porque rmno espera nombres de archivo en la entrada estándar. Lo que estás haciendo actualmente es canalizarlos hacia atrás.