Anda benar-benar perpipaan rm's keluaran ke input dari find. Yang Anda inginkan adalah menggunakan output findsebagai argumen untuk rm:
find -type f -name '*.sql' -mtime +15 | xargs rm
xargsadalah perintah yang "mengubah" input standarnya menjadi argumen dari program lain, atau, karena mereka lebih akurat meletakkannya di manhalaman,
membangun dan mengeksekusi baris perintah dari input standar
Perhatikan bahwa jika nama file dapat berisi karakter spasi, Anda harus memperbaikinya:
find -type f -name '*.sql' -mtime +15 -print0 | xargs -0 rm
Tetapi sebenarnya, findmemiliki jalan pintas untuk ini: -deleteopsi:
find -type f -name '*.sql' -mtime +15 -delete
Harap perhatikan peringatan berikut di 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 Perhatikan bahwa pemipaan langsung ke rmbukan merupakan opsi, karena rmtidak mengharapkan nama file pada input standar. Apa yang Anda lakukan saat ini adalah memipkannya ke belakang.