Удалить каталоги с указанным именем папки - PullRequest
0 голосов
/ 17 февраля 2020

Я пытаюсь написать задание cron, которое будет запускаться на Raspberry Pi и которое будет запускаться раз в несколько дней или раз в две недели и удалять некоторые папки. Эти папки имеют дату c и генерируются автоматически. Например:

2020-02-08
2020-02-09
2020-02-10
2020-02-11
2020-02-12
2020-02-13
2020-02-14
2020-02-15
2020-02-16

Я хотел бы иметь возможность l oop над ними и удалять папки прошлых дней X, сохраняя при этом папки прошлых дней Z, например:

delete:

2020-02-08
2020-02-09
2020-02-10
2020-02-11

keep:

2020-02-12
2020-02-13
2020-02-14
2020-02-15
2020-02-16

, а затем через 4 - 5 дней он снова запустится, удалив те, которые он сохранил с предыдущей недели, и, таким образом, четвертый.

Я знаю, что могу запустить rm -rf 2020-*, чтобы удалить все папки / файлы, начиная с этого, но мне нужен сценарий, чтобы выполнить вышеуказанное для меня!

Кроме того, в каждой папке это будет тысячи файлов, это нужно учитывать при удачном удалении муравьев

1 Ответ

2 голосов
/ 17 февраля 2020

Выполните эту команду в родительском каталоге:

find  . -mtime +5 -type d -name 2020-\* -exec rm  -rf {} \;

Приведенная выше команда найдет все каталоги, которые старше 5 дней и имеют имя, которое соответствует 2020- * (вы можете рассмотреть возможность создания это немного больше будущего и, возможно, go с 2 *). Все каталоги с этим именем (и временем изменения) будут удалены.

Возможно, вы захотите отложить часть -exe c этой команды. Сначала попробуйте эту команду:

find  . -mtime +5 -type d -name 2\* 

Это позволит вам узнать, что найденные каталоги - это те, которые вы хотите удалить, прежде чем вы опередите go, и удалите их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...