Возможный дубликат:
Удалить все, кроме последних X файлов в bash
У меня есть script для создания инкрементных резервных копий ежедневно, и мне нужно удалить все резервные копии, но последние 5.
Например, у меня есть следующие папки:
drwxr-xr-x 4 root root 4096 Oct 29 01:10 2010-10-29 drwxr-xr-x 4 root root 4096 Oct 30 01:10 2010-10-30 drwxr-xr-x 4 root root 4096 Oct 31 01:10 2010-10-31 drwxr-xr-x 4 root root 4096 Nov 1 01:10 2010-11-01 drwxr-xr-x 4 root root 4096 Nov 2 01:10 2010-11-02 drwxr-xr-x 4 root root 4096 Nov 3 01:10 2010-11-03 drwxr-xr-x 4 root root 4096 Nov 4 01:10 2010-11-04 drwxr-xr-x 4 root root 4096 Nov 5 01:10 2010-11-05 drwxr-xr-x 4 root root 4096 Nov 6 01:10 2010-11-06 drwxr-xr-x 4 root root 4096 Nov 7 01:10 2010-11-07 drwxr-xr-x 4 root root 4096 Nov 8 01:10 2010-11-08
И мне нужно поддерживать только последние 5 каталогов и удалять остальные. После выполнения команды мне нужно иметь только это:
drwxr-xr-x 4 root root 4096 Nov 4 01:10 2010-11-04 drwxr-xr-x 4 root root 4096 Nov 5 01:10 2010-11-05 drwxr-xr-x 4 root root 4096 Nov 6 01:10 2010-11-06 drwxr-xr-x 4 root root 4096 Nov 7 01:10 2010-11-07 drwxr-xr-x 4 root root 4096 Nov 8 01:10 2010-11-08
Мне не нужно удалять предыдущие 5 дней, мне нужно удалить все, кроме 5 последних каталогов:)
Теперь я использую:
find /backup/increment -maxdepth 1 -type d -mtime +5 -exec rm -rf {} \;
Но мне нужно совершенствоваться не вовремя:)
EDIT:. Это пример для сервера, который делает резервные копии в течение всего дня, но мне нужен script, который удаляет все папки, предшествующие последним 5, потому что мой компьютер делает резервные копии в 00:10 на ночь, но не все ночи резервное копирование сделано, потому что мой компьютер не работает все дни, и мне нужно иметь всегда последние 5 резервных копий:)