Deleten van oude bestanden in Linux is vaak nodig. Logs moeten bijvoorbeeld vaak periodiek verwijderd worden. Dit doen via bash scripts is over het algemeen geen goed idee. Gelukkig is er Find, die een paar erg interessante argumenten accepteert, een ervan is het uitvoeren van een command als er een bestand is gevonden. Dit argument kan gebruikt worden om bijvoorbeeld rm op te roepen, zodat je kan verwijderen wat je vind. Een ander argument dat Find accepteert is het specificeren van een bepaalde tijd waarin gezocht moet worden. Via deze weg kan je bestanden verwijderen die ouder zijn dan 10 dagen, of ouder dan 10 minuten. Een combinatie van deze argumenten kan gebruikt worden om te doen wat we gedaan willen hebben.

Ten eerste moeten we bestanden vinden die ouder zijn dan, bijvoorbeeld, 10 dagen.
find /var/log -mtime +10

Je kan ook bestanden vinden die ouder zijn dan, bijvoorbeeld, 30 minuten:
find /tmp -mmin +30

Een ander argument Find accepteert is het uitvoeren van commands zodra het iets vind. Je kan iets verwijderen dat ouder is dan een x aantal dagen met het volgende:
find /path/* -mtime +5 -exec rm {} \;

De " {} " representeert het bestand gevonden door Find, zodat je het door kan geven aan rm. De " \; " beeindigt het commando dat uitgevoerd moet worden, tenzij je errors als dit wilt hebben:
find: missing argument to `-exec`

Zoals ik al zei, representeert {} het bestand. Je kan alles doen met een syntax als dit. Je kan bijvoorbeeld ook bestanden verplaatsen met Find:
find ~/projects/* -mtime +14 -exec mv {} ~/old_projects/ \;

Wat alle bestanden in ~/projects naar ~/old_projects zal verhuizen die ouder zijn dan 14 dagen.



Reageer op dit artikel







Voer hier de code in: