Guider schreef op 11 december 2003 @ 14:53:
Daar heb ik ook al aangedacht allen dan leeg ik de hele map en niet alleen de oudste bestanden. Ik wil namelijk alleen de bestanden verwijderen die 3 dagen oud zijn.....
Zoals gezegd, kijk naar de opties van 'find'. Dus zoiets:
Bash:
1
| find /volledig/pad/naar/pics/ -mtime +3 -print0 | xargs --null echo |
Het woordje 'echo' vervangen door 'rm' als je tevreden bent met de lijst van 'te deleten' bestanden die hierdoor gegenereerd worden...(pas doen als je daar HEEL zeker van bent, anders ben je zomaar een hele zooi files kwijt). Zeker als root nooit klooien met commando's met 'rm' er in als je niet heeel, heel, heeeeeel erg zeker weet wat ze precies gaan doen.
Wat de opties -print0 bij find en --null bij xargs doen, moet je maar even in de manual-pages opzoeken. Ik gok dat het zo nog steeds niet perfect werkt met spaties in bestandsnamen (maar al beter dan anders) - dat zou je dus even moeten testen.
Stel jezelf ook vooral precies op de hoogte van wat '-mtime' doet. De +3 als parameter voor mtime betekent 'alles ouder dan 3 dagen'. Je kunt ook zeggen '3' (precies 3 dagen oud) of '-3' (minder dan 3 dagen oud). Eigenlijk betekent het ook niet precies 'ouder dan 3 dagen', maar 'al meer dan 3 dagen niet gewijzigd'. In jouw geval zal dat wel OK zijn.
P.S. Vreemd genoeg schijnt het uit te maken dat '-print0' aan het eind staat van het find commando. Waarom snap ik ook niet.
Die crontab kun je toch alleen gebruiken als taakplanner?
ja, en daarmee kun je zorgen dat het verwijderen 'automatisch' gebeurt als je dat wilt. Dus dat je automatisch altijd alleen bestanden hebt van de laatste 3 dagen, zonder dat je met de hand een of ander script moet uitvoeren.