Удалить старые файлы в каталоге, но не root

В настоящее время я настраиваю 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 

Обратите внимание, что это может быть разрушительным, например, вы можете удалить только что созданную директорию и другую программу. Удаление вещей, основанных на тайм-ауте, редко является хорошей идеей. Если вам нужно удалить вещи, вы должны сделать это, когда файлы будут обработаны до вашего уровня удовлетворенности, а не после произвольной задержки.