Heute zeigen wir Ihnen einen Weg, wie Sie das können Dateien löschen, die älter als 'X' Tage sind. Angenommen, Sie möchten Dateien löschen, die älter als 7 Tage sind, dann hilft Ihnen dieser Artikel dabei. Mit dem Dienstprogramm find können Sie einige interessante Argumente eingeben, darunter eines, um einen weiteren Befehl für jede Datei auszuführen. Um herauszufinden, welche Dateien älter als eine bestimmte Anzahl von Tagen sind, verwenden wir dies Dienstprogramm finden und dann verwenden Sie die rm Befehl sie zu löschen. Die Befehlssyntax lautet wie folgt:
/Pfad/zu/Dateien finden* -mtime +5 -exec rm {} \;
Wir haften nicht für eventuell auftretende Datenverluste. Wir haben Sie empfohlen Listen Sie die Dateien auf und überprüfen Sie bevor Sie sie löschen, indem Sie den folgenden Befehl ausführen:
/Pfad/zu/Dateien finden* -mtime +5 -exec ls {} \;
Hinweis: Es gibt Leerzeichen zwischen rm, {} und \;

Befehlserklärung:
Das erste Argument im obigen Befehl ist das Pfad zu den Dateien. Das zweite Argument ist -Mtime wird verwendet, um anzugeben, wie viele Tage die Datei alt ist. Wenn Sie +5 eingeben, werden Dateien gefunden, die älter als fünf Tage sind. Das letzte Argument ist -Exec ermöglicht Ihnen die Übergabe eines Befehls wie rm. Die {} \; am Ende ist erforderlich, um den Befehl zu beenden.
Dies sollte auf fast allen Linux-Versionen wie Ubuntu, Fedora, Red Hat, Suse usw. funktionieren. Wenn Sie auf ein Problem stoßen, das hier ziemlich unmöglich erscheint, lassen Sie es uns in den Kommentaren unten wissen.
Suraj Salunkhe
Ich habe diesen Trick verwendet! Genialer Trick! Danke, dass du so einen guten Trick geteilt hast :)
Amruta Patil
Ja, ich habe diese Cammand während der Übungssitzung von RHCE verwendet.
Ben
find ./* -mtime +5 -exec ls {} \; >> ./5DaysOld
alias 5DayLs="find ./* -mtime +5 -exec ls {} \; >> ./5DaysOld"
Habe hier etwas aus deinem Vorschlag zusammengewürfelt. Eine Methode zum Erstellen einer einfachen Textdateiliste von Dateien, die fünf Tage alt sind. Es ist einfacher, eine Aufzeichnung zur Ansicht vor dem Entfernen von Dateien zu führen. Benutzer können dann cat, vi, vim, gedit, emacs verwenden, um zu sehen, was sie auswerfen dürfen.
find ./* -mtime +5 -exec ls {} \; >> ./5DaysOld
Aufschlüsseln ./ ist das aktuelle Verzeichnis. Finden Sie die Verwendung eines aktuellen Verzeichnisses oft sicherer als die Verwendung der / cannon. >> hängt an eine Datei an, wenn sie nicht existiert, wird sie erstellt.
Dachte sogar, es könnte als Alias nützlich sein. Könnte / sollte es wahrscheinlich zuerst auf ein Shell-Skript portieren. Aber faul zu sein, hier zu spät.
Ben Piper
Vielen Dank! Ich habe diese Syntax in einem Cron-Job verwendet.
Vivian
Der gute Tipp, um Dateien zu löschen, die älter als bestimmte Tage sind. Wenn Ihre Argumentliste jedoch lang ist (ich denke, das Maximum beträgt 65535 oder so ähnlich), funktioniert dies nicht.
Ich habe ein benutzerdefiniertes Skript, das die Arbeit erledigt:
#!/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
Fertig.
Rajesh Namase
Danke für die Bereitstellung des Skripts.
Vivian
Ihr Willkommen Namase.
Rufen Sie das Skript wie folgt auf:
./scriptname.sh DEL numDays
Wenn numDays nicht angegeben ist, wird mindestens 1 verwendet. Stellen Sie also sicher, dass Sie numDays angeben. Ich übernehme keine Haftung dafür, wie Sie dieses Skript verwenden und für eventuell auftretende Datenverluste.
Pawan
Wenn ich Verzeichnisse und Dateien löschen möchte, die 30 Tage alt sind, auf meinem Remote-Rechner und eine Sache ausschließt 1 und 2 oder 3 Verzeichnisse und wie kann ich dies tun ..?? Bitte teilen Sie Ihre Gedanken.
Ali
Ich verwende diese Technik, die sehr nützlich ist, um die Trc-Datei in Oracle zu löschen
Ethan
Vielen Dank, dass Sie diesen nützlichen Befehl für alle Benutzer freigegeben haben. Wir können ältere Dateien in Linux leicht löschen. Ich suche auch danach und habe hier endlich die Lösung gefunden.
Greg
Bekommt dies auch Dateien in Unterverzeichnissen? Wenn ja, wie würde ich es tun, damit es nicht tut?
find /home/greg/logs -type f -mtime +5 -exec rm {} ;
Suraj Salunkhe
Ich habe nach einem solchen Befehl gesucht. Wirklich hilfreich. Und danke, dass du das Skript geteilt hast, Vivian.