Suchen Sie nach Dateien, die nicht über ein Bash-Skript in Ordnern entfernt werden

Suchen Sie nach Dateien, die nicht über ein Bash-Skript in Ordnern entfernt werden

Ich bin ein Neuling in Sachen Bash-Scripting und komme mit der Find-Methode von Ubuntu nicht weiter. Ich möchte in dem Ordner /opt/nach allen Ordnern suchen, um zu sehen, ob sie älter als ein bestimmtes Datum sind. Wenn sie älter sind, sollten die Dateien in diesem Ordner entfernt werden (und eigentlich auch der Ordner selbst). Wenn das Datum noch zu neu ist, sollten die Dateien nicht berührt werden.

Was ich im Code habe:

find $BACKUP_DIR -maxdepth 1 -mtime +$DAYS_TO_KEEP -name "*$mystring" -exec rm -rf '{}' ';'

Die Variablen enthalten diese Werte:

BACKUP_DIR=/opt/
TESTDIR=2014-11-25-daily_testmachine
mystring=-daily_testmachine

Wenn die Variable $DAYS_TO_KEEP2 ist, lautet das Datum 25.11.2014 und der Ordnername ist 2014-11-20-daily_testmachineder Ordner und sein Inhalt sollte gelöscht werden.

Was mache ich falsch, dass Find diese zu entfernenden Dateien und Ordner nicht entfernt/findet? Ich kann den Fehler scheinbar nicht finden.

Notiz:Wenn ich den Befehl mit dem genauen Stringnamen des Ordners darin ausführe, wird der Ordner gelöscht. Also stimmt etwas mit meinem Format oder meiner Benennung nicht.

find $BACKUP_DIR -maxdepth 1 -name "2014-11-20-daily_testmachine" -exec rm -rf '{}' ';'

Zur Verdeutlichung habe ich einen Screenshot gemacht, der das Setup zeigt:

Antwort1

Mein Fehler war ein Logikfehler mit -mtime. Ich dachte, mein Skript würde die Namen prüfen, aber -mtimees prüft das Datum, an dem die Datei erstellt wurde. Also mein endgültiger Code:

DAYS_TO_KEEP=2
find $BACKUP_DIR -maxdepth 1 -mtime +"$DAYS_TO_KEEP" -exec rm -rf {} \;

Ich musste nur ein tun, sudo touch -d "3 days ago" /filepath/folderToRemoveum -mnameden Ordner zu findenUndStellen Sie sicher, dass die Datei alt genug war, um entfernt zu werden. Dieser letzte Code entfernt also alle Ordner, die älter sind als meine Variable$DAYS_TO_KEEP

verwandte Informationen