Bekijk de volledige versie : помогите скриптом удаления папок
Люди, кто силен в shell, помогите, а то мои познания пока только на уровне понимаю, что другие сделали и могу подправить под свои нужды =)
Задача следующая - в директории создаются папки по дням ММ-ДД-ГГГГ, в них сохраняются картики с камеры по детектору движения. Нужно на автомате удалять папки определенной давности... например неделя.
К сожалению, find не работает. Мне пока в голову приходит только делать ls -lat и удалять все, кроме первых семи папок.
отвечу сам себе, может кому потом пригодиться
итак, find есть, но его сначала надо установить
ipkg install findutils
список всех папок нужного вида не измененых за последние семь дней
find /tmp/mnt/disc1_1/camera/ -name "[0-9]*_[0-9]*_2[0-9][0-9][0-9]" -type d -atime +7
или можно сразу в cron вставить удаление
find /tmp/mnt/disc1_1/camera/ -name "[0-9]*_[0-9]*_2[0-9][0-9][0-9]" -type d -atime +7 -exec rm -R {} \;
find /tmp/mnt/disc1_1/camera/ -name "[0-9]*_[0-9]*_2[0-9][0-9][0-9]" -type d -atime +7 -exec rm -R {} \;
Только почему atime? Это же время обращения - к файлам могут обращаться и после создания. Тогда уж 'ctime' (время изменения атрибутов), или 'mtime' - время модификации (для каталога это - запись/стирание/изменение атрибутов файла).
Кроме того, нужно указывать путь к 'rm', чтобы не срабатывал alias.
Рекомендую, во избежание проблем с пробелами и спец. символами в именах, всегда использовать комбинацию '-print0 | xargs -0', например, так:
find /tmp/mnt/disc1_1/camera/ -maxdepth 1 -name "[0-1][0-9]-[0-3][0-9]-20[0-1][8-9]" -type d -mtime +7 -print0 | xargs -0 /bin/rm -r
'-maxdepth 1' позволит не обходить рекурсивно каталоги.
Еще можно использовать regexp - чуть более ресурсоемко, но более гибко:
cd /tmp/mnt/disc1_1/camera/ && \
find . -maxdepth 1 -regextype posix-extended -regex '[0-9]{2}-[0-9]{2}-[0-9]{4}' -type d -mtime +7 -print0 | xargs -0 /bin/rm -r
спасибо за науку =) я только учусь
про atime, mtime, ctime в курсе, но вроде для папок это все одинаково....
спасибо за науку =) я только учусь
про atime, mtime, ctime в курсе, но вроде для папок это все одинаково....
Ну как же? Время модификации, время смены атрибутов, время доступа - это всегда разные вещи.