Idag kommer vi att visa ett sätt för dig som du kan radera filer som är äldre än "X" dagar. Anta att du vill ta bort filer som är äldre än 7 dagar så hjälper den här artikeln dig att göra det. Sökverktyget tillåter dig att skicka in ett par intressanta argument, inklusive ett för att köra ett annat kommando på varje fil. För att ta reda på vilka filer som är äldre än ett visst antal dagar kommer vi att använda detta hitta nytta och använd sedan rm kommando för att radera dem. Kommandosyntaxen är som följer:
hitta /sökväg/till/filer* -mtime +5 -exec rm {} \;
Vi är inte ansvariga för eventuell dataförlust som kan uppstå. Vi rekommenderade dig till lista filerna och kontrollera innan du tar bort dem genom att köra följande kommando:
hitta /sökväg/till/filer* -mtime +5 -exec ls {} \;
Notera: Det finns mellanslag mellan rm, {} och \;

Kommandoförklaring:
Det första argumentet i kommandot ovan är sökvägen till filerna. Det andra argumentet är -mtime används för att ange hur många dagar gammal filen är. Om du anger +5 kommer den att hitta filer som är äldre än fem dagar. Det sista argumentet är exec låter dig skicka in ett kommando som rm. De {} \; i slutet krävs för att avsluta kommandot.
Detta borde fungera på nästan alla versioner av Linux som Ubuntu, Fedora, Red Hat, Suse, etc. Om du står inför något problem som verkar ganska omöjligt här, låt oss veta det i kommentarerna nedan.
Jag använde det här tricket! Grymt trick! Tack för att du delar med dig av ett så bra trick :)
Ja, jag använde den här kameran under övningssessionen för RHCE.
find ./* -mtime +5 -exec ls {} \; >> ./5DaysOld
alias 5DayLs="find ./* -mtime +5 -exec ls {} \; >> ./5DaysOld"
Fick ihop något ur ditt förslag här. En metod för att skapa en lista över filer som är fem dagar gamla i vanlig text. Lättare att hålla ett register för visning innan du tar bort filer. Användare kan sedan använda cat, vi, vim, gedit, emacs för att se vad de kan slänga ut.
find ./* -mtime +5 -exec ls {} \; >> ./5DaysOld
Att bryta ner ./ är den aktuella katalogen. Hitta att använda en aktuell katalog ofta säkrare än att använda /-kanonen. >> läggs till i en fil, om den inte finns skapas den.
Tänkte till och med att det kan vara användbart som alias. Förmodligen kunde/bör porta det till ett skalskript först. Att vara lat dock, sent här.
Tack! Jag använde den här syntaxen i ett cron-jobb.
Det bra tipset att ta bort filer äldre än vissa dagar. Men om din argumentlista är lång (jag tror att maxvärdet är 65535 eller något i den stilen) kommer detta inte att fungera.
Jag har ett anpassat skript som gör jobbet:
#!/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
Klar.
Tack för att du gav manuset.
Välkommen Namase.
Kalla manuset så här:
./scriptname.sh DEL numDays
Om numDays inte anges kommer den att använda minst 1 så se till att du anger numDays. Jag är inte ansvarig för hur du använder det här skriptet och för eventuell dataförlust som kan uppstå.
om jag vill ta bort Dirs och filer från 30 dagar gamla till min fjärrmaskin och en sak exklusive 1 och 2 eller 3 dirs och så hur kan jag göra detta ..?? Dela gärna med dig av dina tankar.
Jag använder den här tekniken, den är mycket användbar för att ta bort trc-fil i Oracle
Tack för att du delar detta användbara kommando för alla användare. Vi kan enkelt ta bort äldre filer i Linux. Jag letar också efter det och fick äntligen lösningen här.
Får detta filer i underkataloger också? Om så är fallet, hur skulle jag göra det så att det inte gör det?
hitta /home/greg/logs -typ f -mtime +5 -exec rm {} ;
Jag letade efter ett sådant kommando. Verkligen hjälpsam. Och tack för att du delar med dig av manuset, Vivian.