Пока у вашего find
есть опция -mmin
, вы можете:
Использование сценария оболочки:
#!/bin/sh
files_dir=/tmp
file_count=$(find "$files_dir" -name 'ci_session*' -mmin 60 -exec echo x \; | wc -l)
if [ "$file_count" -gt 1000 ]; then
find "$files_dir" -name 'ci_session*' -mmin 60 -exec rm {} \;
fi
file_count
будет установлено на количество файлов, найденных в указанном каталоге, соответствующих шаблону.
Если file_count
больше 1000, мы снова запустим поиск и удалим эти файлы.
С помощью bash мы можем исключить второй вызов find с массивом:
#!/bin/bash
files_dir=/tmp
mapfile -t files < <(find "$files_dir" -name 'ci_session*' -mmin 60)
if ((${#files[@]}>1000)); then
rm "${files[@]}"
fi
Примечание :В зависимости от того, сколько файлов вы ожидаете иметь, решение bash может столкнуться с вашим аргументом командной строки limit .