Мы используем сервер 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 {} \;