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

Проблема заключалась в том, что я не запускал его с systemctl --user start , я использовал просто systemctl start . Сценарий bash основан на пользовательских материалах KDE, поэтому запуск сценария с sudoне работал, что является режимом по умолчанию для служб.

0
01.11.2018, 15:25
3 ответа

Вы, вероятно, имели в виду

0 */1 * * * find /root/Downloads/complete/* -type d -mmin +60 -exec rm -r "{}" \;

, потому что в вашем примере findбудет соответствовать имени каталога (и всему, что под ним), но с подстановочным знаком оболочка расширит это до всего (кроме точки -names) в каталоге.

2
28.01.2020, 02:33

Вместо этого используйте только эту строку.

 0 */1 * * * find /root/Downloads/complete/ \( -type f -o -type d \) -mmin +60 -delete

Будут удалены только файлы и каталоги по пути /root/Downloads/complete/с измененным возрастом с час назад.

0
28.01.2020, 02:33
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

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

0
28.01.2020, 02:33

Теги

Похожие вопросы