Назад | Перейти на главную страницу

Как я могу рекурсивно удалять старые файлы и удалять пустые каталоги?

Мы используем сервер AIX для размещения тысяч и тысяч маленьких файлов во вложенной структуре каталогов. Я пытаюсь написать сценарий, который рекурсивно удалит старые файлы, а затем удалит содержащий их каталог, если это был последний файл в каталоге.

В целях примеров предположим, что любой файл старше 60 дней является «старым».

Это звучит просто и легко, но я некоторое время оглядывался и не нашел решения. Есть ли комбинация find и его флаги, возможно, конвейерные с rmdir что выполнит вышеуказанное?

если вы определяете «старше чем», имея время модификации более 60 дней, следующая команда удалит ваши старые файлы:

find /your/dir -mtime +60 -exec rm -f {} \;

для удаления пустых каталогов вы можете использовать эту команду:

find /your/dir -type d -exec rmdir {} \;

он точно не находит пустые каталоги, но поскольку rmdir не удаляет каталоги, содержащие файлы, он удаляет только пустые.

Вы сказали, что используете AIX. Я думаю, что базовые команды оболочки помогут, если я не ошибаюсь.

find /path/to/files* -mtime +60 -exec rm {} \;
find /path/to/files -type d -exec rmdir 2>/dev/null {} \;