Skrypt do wykonania przez cronjob, który usuwa wszystkie pliki w wielu katalogach

3

Mam nadzieję, że możesz mi pożyczyć swoją wiedzę.

Korzystam z hostingu współdzielonego na Hostgator i muszę dowiedzieć się, jak usuwać wszystkie pliki .gz w wielu katalogach co godzinę. Myślę, że mam poprawne polecenie cronjob, aby zrobić to dla jednego katalogu:

/usr/bin/find /path/to/directory/ -type f -name '*.gz' -exec rm {} \;

Czy to jest poprawne?

Jeśli tak, jak mam wykonać tę samą akcję, ale dla wielu (tj. Kilkudziesięciu) katalogów? Zgaduję, że mogę wykonać jeden skrypt zamiast kilku pojedynczych zadań cron, ale jestem w tym nowy. Jak wyglądałby taki skrypt? Jak mógłbym wykonać skrypt za pomocą cronjob?

Z góry dziękuję za wszelką pomoc!

Glen
źródło
Jeśli twoja wersja find obsługuje to, możesz użyć -delete zamiast -exec rm {} \; Lub przynajmniej + zamiast \;.
Dennis Williamson
Alternatywą jest /usr/bin/find /path/to/directory/ -type f -name '*.gz' -print0 | xargs -0 rm co pozwala uniknąć wykonywania rm w kółko dla każdego pojedynczego pliku.
hlovdal

Odpowiedzi:

1

Przekaż wiele ścieżek do find.

find /dir1 /dir2 ...
Ignacio Vazquez-Abrams
źródło
Dzięki! A to będzie działać dla dużej liczby katalogów?
Glen
Powinien, chociaż nie znam dokładnego maksimum.
Ignacio Vazquez-Abrams