bash удаление старых файлов в дирректории с сохранением последних X файлов

Рейтинг: 0Ответов: 1Опубликовано: 01.07.2023

Необходимо удалить старые бэкапы из указанной дирректории, которые старше 5 дней. При условии, что после удаления, в дирректории останется не меньше X файлов. Если файлов останется меньше, то не удалять.

Краткое описание ситуации: Иногда сервер выключен, поэтому бэкапы делаются не постоянно. Сервер запускают через неделю и скрипт удаляет все бэкапы. А надо бы сохранить последние X файлов, и не важно, что они старше 5 дней.

Раньше было реализовано через find

find /path -mtime +5 -exec rm {} \;

Но это не решает проблему, описанную выше

Ответы

▲ 3Принят

К ответу @Oopss

ls -t ./* | tail -n +3 | xargs rm

ls -t - вывести отсортировав по времени

$ ls -t
10  9  8  7  6  5  4  3  2  1

tail -n +3 - хвост списка начиная с 3его сначала, чтоб оставить 5 - пиши +6

$ ls -t | tail -n +3
8
7
6
5
4
3
2
1

xargs rm - передает список команде rm