Вы на самом деле обжигающе rm
«s выход к входу find
. Вы хотите использовать вывод в find
качестве аргументов для rm
:
find -type f -name '*.sql' -mtime +15 | xargs rm
xargs
это команда, которая «преобразует» свой стандартный ввод в аргументы другой программы, или, как они точнее помещают ее на man
страницу,
создавать и выполнять командные строки из стандартного ввода
Обратите внимание, что если имена файлов могут содержать символы пробела, вы должны исправить это:
find -type f -name '*.sql' -mtime +15 -print0 | xargs -0 rm
Но на самом деле find
для этого есть ярлык: -delete
опция:
find -type f -name '*.sql' -mtime +15 -delete
Обратите внимание на следующие предупреждения 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 Обратите внимание, что прямая передача по конвейеру rm
не является вариантом, потому rm
что не ожидает имен файлов на стандартном вводе. То, что вы сейчас делаете, - это перекачивание их в обратном направлении.
man
говорит: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.
Я не уверен, что это будет иметь значение, учитывая другие варианты, которые вы использовали, но вы пробовали это?Выбирает файлы
/usr/www/bar/htdocs
старше 15 дней и удаляет их.источник
Другой более простой метод - использовать
locate
команду. Затем перенесите результат вxargs
.Например,
источник
Предполагая, что вы не находитесь в каталоге, содержащем файлы резервных копий * .sql:
Опция -v выше удобна: она подробно выводит, какие файлы удаляются по мере их удаления.
Мне нравится перечислять файлы, которые будут удалены первыми, чтобы быть уверенным. Например:
источник