Jak mogę usunąć wszystkie pliki w folderze, do którego nie uzyskano dostępu przez określony czas?

14

Chciałbym uruchomić nocne zadanie CRON, które usuwa wszystkie pliki w folderze, do którego nie uzyskano dostępu przez tydzień lub dłużej. Jaki jest najbardziej efektywny sposób na zrobienie tego w bash?

bloudermilk
źródło
2
findmoże filtrować na podstawie atime. „Poprawność” czasu zależy noatimeco najmniej od konfiguracji (patrz ).

Odpowiedzi:

20

Chcesz findnarzędzie .

find folder -depth -type f -atime +7 -delete

(Spowoduje to usunięcie wszystkich plików ( tylko zwykłe , bez potoków, urządzeń specjalnych, katalogów, dowiązań symbolicznych) z danego folderu i wszystkich podkatalogów (rekurencyjnie), w których ostatni czas dostępu jest dłuższy niż 7 dni temu.)

Paŭlo Ebermann
źródło
6
Możesz -type ftam dodać, aby usunąć tylko pliki, a nie całe katalogi.
Shadur,
3

Możesz sprawdzić, tmpwatchktóre można umieścić w zadaniu crona. Nie musisz sam z siebie korzystać find. Na RHEL jest w tmpwatchRPM.

Aaron D. Marasco
źródło
Jest to zdecydowanie bardziej eleganckie rozwiązanie, ale wolę przenośność find.
bloudermilk