В настоящее время я настраиваю crontab для удаления всех файлов и каталогов в указанном пути каждый час.
Мое текущее решение – две строки, поэтому я надеялся, что кто-то покажет мне, как сделать это в одну строку. В настоящий момент вторая команда удаляет complete
каталог. Я хотел бы сохранить complete
каталог и удалить все каталоги только в complete
.
Что я делаю не так? Если после complete
не будет косой черты? /*
?
Я начинаю, когда дело доходит до командной строки.
Чтобы удалить файлы старше 60 минут в каталоге:
0 */1 * * * find /root/Downloads/complete/ -type f -mmin +60 -delete
Чтобы удалить каталоги старше 60 минут в каталоге:
0 */1 * * * find /root/Downloads/complete/ -type d -mmin +60 -exec rm -r "{}" \;
Вы, вероятно,
0 */1 * * * find /root/Downloads/complete/* -type d -mmin +60 -exec rm -r "{}" \;
потому что в вашем примере find
будет совпадать с именем-каталогом (и всем, что под ним), но с подстановочным знаком оболочка расширит это ко всему (кроме имен точек) под каталогом.
Вместо этого используйте только одну строку.
0 */1 * * * find /root/Downloads/complete/ \( -type f -o -type d \) -mmin +60 -delete
Удалит только файлы и каталоги под /root/Downloads/complete/
path с измененным старением с тех пор, как час назад.
find /root/Downloads/complete/ -type d -mmin +60 -exec rm -r "{}" \;
Это удаляет каталог и все его содержимое, если сам каталог не был изменен в течение часа, даже если файлы в этом каталоге или в подкаталогах были изменены в последнее время. Это, вероятно, не то, что вы хотите.
Время модификации в каталоге, вероятно, не так полезно. Я предлагаю удалить старые файлы, а затем каталоги, когда они станут пустыми. Чтобы избежать удаления корневого каталога, пропустите -mindepth 1
.
cd /root/Downloads/complete && find . -type f -mmin +60 -delete && find . -depth -mindepth 1 -type d -empty -delete
Обратите внимание, что это может быть разрушительным, например, вы можете удалить только что созданную директорию и другую программу. Удаление вещей, основанных на тайм-ауте, редко является хорошей идеей. Если вам нужно удалить вещи, вы должны сделать это, когда файлы будут обработаны до вашего уровня удовлетворенности, а не после произвольной задержки.