Вы можете объединить несколько операторов, чтобы они ограничивали то, что включено. Вы на самом деле уже делаете это, потому что у вас есть -type
и -ctime
, соединенные с неявным AND
.
, который вам нужно добавить, это regex
, и выможет сделать что-то вроде:
/bin/find /root/script/* -type f ! -regex '/root/script/owner/.*' -ctime +30 -exec rm {} \;
Это должно исключить файлы в этом конкретном дереве, так как ! -regex
будет ложным для них. Основная идея заключается в том, что к дальнейшим операциям будут применяться только те, которые соответствуют всем условиям.
В этом случае любые нестандартные файлы будут исключены. Из других, любые, которые не соответствуют регулярному выражению, будут исключены. Из оставшихся мы выбросим все, которые не соответствуют 30-дневному требованию. Все, что осталось, будет обработано rm
.
Оставшийся каталог, конечно, будет выполнен с большим временем:
/bin/find /root/script/owner -type f -ctime +186 -exec rm {} \;