Sie leiten rmden Ausgang tatsächlich an den Eingang von weiter find. Was Sie wollen, ist die Ausgabe von findals Argumente für rm:
find -type f -name '*.sql' -mtime +15 | xargs rm
xargsist der Befehl, der seine Standardeingabe in Argumente eines anderen Programms "konvertiert" oder, wie sie genauer auf die manSeite setzen,
Erstellen und Ausführen von Befehlszeilen aus Standardeingaben
Beachten Sie, dass Sie Folgendes korrigieren sollten, wenn Dateinamen Leerzeichen enthalten können:
find -type f -name '*.sql' -mtime +15 -print0 | xargs -0 rm
Aber eigentlich findhat eine Abkürzung dafür: die -deleteOption:
find -type f -name '*.sql' -mtime +15 -delete
Bitte beachten Sie die folgenden Warnungen in 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.
PS Beachten Sie, dass das direkte Weiterleiten an rmkeine Option ist, da rmbei der Standardeingabe keine Dateinamen erwartet werden. Was Sie gerade tun, ist, sie rückwärts zu leiten.