Vandaag zullen we u een manier laten zien waarmee u kunt bestanden verwijderen die ouder zijn dan 'X' dagen. Stel dat u bestanden ouder dan 7 dagen wilt verwijderen, dan helpt dit artikel u daarbij. Met het hulpprogramma find kunt u een aantal interessante argumenten invoeren, waaronder een om een ander commando op elk bestand uit te voeren. Om erachter te komen welke bestanden ouder zijn dan een bepaald aantal dagen, gebruiken we dit zoek nut en gebruik dan de rm commando om ze te verwijderen. De opdrachtsyntaxis is als volgt:
zoek /pad/naar/bestanden* -mtime +5 -exec rm {} \;
Wij zijn niet aansprakelijk voor eventueel gegevensverlies. We hebben je aanbevolen aan de lijst de bestanden op en controleer voordat u ze verwijdert, door de volgende opdracht uit te voeren:
zoek /pad/naar/bestanden* -mtime +5 -exec ls {} \;
Opmerking: Er zijn spaties tussen rm, {} en \;

Opdracht Uitleg:
Het eerste argument in de bovenstaande opdracht is de pad naar de bestanden. Het tweede argument is: -Mtime wordt gebruikt om aan te geven hoeveel dagen oud het bestand is. Als u +5 invoert, vindt het bestanden die ouder zijn dan vijf dagen. Het laatste argument is -Exec stelt u in staat om een commando zoals rm door te geven. De {} \; aan het einde is vereist om de opdracht te beëindigen.
Dit zou moeten werken op bijna alle versies van Linux zoals Ubuntu, Fedora, Red Hat, Suse, enz. Als je een probleem tegenkomt dat hier onmogelijk lijkt, laat het ons dan weten in de reacties hieronder.
Suraj Salunkhe
Ik heb deze truc gebruikt! Geweldige truc! Bedankt voor het delen van zo'n goede truc :)
Amruta Patil
Ja, ik heb deze cammand gebruikt tijdens de oefensessie van RHCE.
Ben
find ./* -mtime +5 -exec ls {} \; >> ./5DaysOld
alias 5DayLs="find ./* -mtime +5 -exec ls {} \; >> ./5DaysOld"
Heb hier iets uit je suggestie gehaald. Een methode voor het maken van een lijst met bestanden in platte tekst van vijf dagen oud. Gemakkelijker om een record bij te houden om te bekijken voordat u bestanden verwijdert. Gebruikers kunnen dan cat, vi, vim, gedit, emacs gebruiken om te zien wat ze kunnen weggooien.
find ./* -mtime +5 -exec ls {} \; >> ./5DaysOld
Het opsplitsen van ./ is de huidige map. Vind het gebruik van een huidige directory vaak veiliger dan het gebruik van het / kanon. >> wordt toegevoegd aan een bestand, als het niet bestaat, wordt het gemaakt.
Dacht zelfs dat het nuttig zou kunnen zijn als alias. Waarschijnlijk zou/moet het eerst naar een shellscript porten. Maar lui zijn, laat hier.
Ben Pijper
Bedankt! Ik heb deze syntaxis gebruikt in een cron-job.
Vivian
De goede tip om bestanden die ouder zijn dan bepaalde dagen te verwijderen. Als uw lijst met argumenten echter lang is (ik denk dat het maximum 65535 is of iets dergelijks), zal dit niet werken.
Ik heb een aangepast script dat het werk doet:
#!/bin/bash
cd /directory-to-be-checked
allfiles=`ls`
NOW=`date +%s`
for filename in $allfiles
do
OLD=`stat -c %Z $filename`
if [ "$2" == "" ]
then
DELAY=86400
else
let "DELAY=$2 * 86400"
fi
AGE=`expr $NOW - $OLD`
#echo "Delay is $DELAY and Age is $AGE"
#exit 0
if [ $AGE -gt $DELAY ]
then
#echo "File $filename is $AGE"
fstamp=`ls -l $filename`
if [ "$1" == "DEL" ]
then
echo "Deleting file $filename"
`rm -f $filename`
else
echo "$fstamp"
fi
fi
Gereed.
Rajesh Namasé
Bedankt voor het geven van het script.
Vivian
Graag gedaan Namasé.
Roep het script als volgt aan:
./scriptname.sh DEL numDays
Als numDays niet is opgegeven, wordt het minimum van 1 gebruikt, dus zorg ervoor dat u numDays opgeeft. Ik ben niet aansprakelijk voor hoe u dit script gebruikt en voor enig gegevensverlies dat kan optreden.
Pawan
als ik Dirs en bestanden van 30 dagen oud naar mijn externe machine wil verwijderen en één ding met uitzondering van 1 en 2 of 3 mappen en dus hoe kan ik dit doen ..?? Deel alstublieft uw mening.
Ali
Ik gebruik deze techniek, het is erg handig voor het verwijderen van het trc-bestand in oracle
Ethan
Bedankt voor het delen van deze nuttige opdracht voor alle gebruikers. We kunnen gemakkelijk oudere bestanden in Linux verwijderen. Ik ben er ook naar op zoek en heb hier eindelijk de oplossing gevonden.
Greg
Krijgt dit ook bestanden in submappen? Zo ja, hoe zou ik het doen zodat het niet gebeurt?
zoek /home/greg/logs -type f -mtime +5 -exec rm {} ;
Suraj Salunkhe
Ik was op zoek naar zo'n commando. Erg hulpzaam. En bedankt voor het delen van het script, Vivian.