Automatisches Löschscript mit Ausnahmen

S

Sanches

Jungspund
Hallo zusammen,

ich versuche mir gerade ein Script zusammenzubasteln,
das mir Daten, die älter als ein bestimmtes Zeitfenster sind, löscht.

z.B. mit folgendem Script:
find /"bestimmter-pfad" -mtime +14 -exec rm {} \;

Ich suche jedoch noch eine Erweiterung, die es mir erlaubt,
das ich z.B bestimmte Verzeichnisse (Namen!) nicht durchsuche und somit lösche! :evil:

Weis hierfür jemand einen Rat / Tip ??? ?(

Gruss Sanches
 
find /"bestimmter-pfad" -not -regex "\./pfad/.*" -mtime +14 -exec rm {} \;

Edit: Ich hab .* am Ende des Pfades vergessen.
 
Zuletzt bearbeitet:
Danke rup!

Jedoch geht das Script nicht! :(

folgenden Aufruf habe ich verwendet:

find /tmp/test -not -regex "\./allgemein/.*" -atime -14 -exec rm {} \;

In meinem Test habe ich zurvor Dateien und Verz. mit unterschiedlichem Datum erstellt! Jedoch versucht er jedes mal ALLES zu löschen - egal wie alt!

Abgesehen davon muss man noch die Änderung ... rm -r {} ... machen,
da er sonst keine Verz. löscht.

@rup: Hat das Script bei dir funktioniert???

MfG Sanches
 
Hallo Sanches,

tut mir leid, ich hab den Befehl nur ganz kurz im aktuellen Verzeichnis (.) suchen lassen und deshalb bei dem Regex natuerlich mit \./ (Punkt ohne vorherigen Backslash wuerde jedes Zeichen ausser Zeilenumbruch abdecken) begonnen.
z.B. find . -not -regex "\./xyz"
Wenn du bei find nicht im aktuelle Verzeichnis suchst musst du den ganzen Pfad im regex angeben.
find /tmp/test -not -regex "/tmp/test/allgemein.*"

Wenn du mit rm -r loeschen willst, darfst du in dem Ausdruck nach dem Verzeichnis allgemein keinen Slash machen, da sonst das ganze Verzeichnis geloescht wuerde.
Versuch es einfach mal ohne Loeschbefehl:
find /tmp/test -not -regex "/tmp/test/allgemein.*" :]
find /tmp/test -not -regex "/tmp/test/allgemein/.*" X(

Dein Befehl sollte so funktionieren:
find /tmp/test -not -regex "/tmp/test/allgemein.*" -atime -14 -exec rm {} \;

Gruss Rupert
 
ich verzweifel noch ...

Hallöchen,

@rup: ich hab jetzt mal verschiedenes versucht:

1.) folgenden Aufruf:
find /tmp/sebo -not -regex "/tmp/sebo/allgemein.*"

folgende Ausgabe erfolgte nun:
/tmp/sebo
/tmp/sebo/1
/tmp/sebo/1/11
/tmp/sebo/1/12
/tmp/sebo/1/test.txt
/tmp/sebo/1/text2.txt
/tmp/sebo/4
/tmp/sebo/4/44
/tmp/sebo/4/41
/tmp/sebo/2
/tmp/sebo/2/hallo.txt
/tmp/sebo/3
/tmp/sebo/3/Verzeichnis
/tmp/sebo/3/Verzeichnis/asdasdas
/tmp/sebo/3/Verzeichnis/Verzeichnis

=> soweit alles im grünen Bereich! :D :D :D
die Verzeichnisse 1 + 4 sind mit heutigem Datum (19.07!)
die Verzeichnisse 2 + 3 sind mit dem Datum "19.06"
Die verschienden Dateien sind mit unterschiedlichen Datum versehen!

bei dieser Ausgabe wird das Verzeichnise "allgemein" ausgelassen => so solls auch sein!!! :tongue:

2.) nun diesen Aufruf getestet:

find /tmp/sebo -not -regex "/tmp/sebo/allgemein.*" -atime -14 -exec rm {} \;

bei diesem Aufruf wird meine gesamte Struktur gelöscht! (wenn ich noch rm -r verwende!!!) :(

d.h. der Fehler bei diesem Script liegt leider in der Zeiangabe! ansonst funzt alles! Er überspringt die, die er soll. Bei den restlichen Daten hat er Probleme mit den Zeitangaben!

Leider habe ich hier auch schon mit atime & mtime versucht -> geht auch net!

Ich verzweifel langsam ... ;( ;( ;(

Gruss Sanches
 
Ja, das erste Verzeichniss muss man auch noch ausnehmen:

find /tmp/test -not -regex '/tmp/test' -not -regex "/tmp/test/allgemein.*" -atime -14 -exec rm {} \;
 
Zuletzt bearbeitet:

Ähnliche Themen

verzeichniss suche funktioniert nicht

Zeilenweise suchen, löschen und ersetzen / Inhalt einfügen

Archivierungsprogramm

backüps automatisch löschen

Dateien nach Pruefsumme loeschen

Zurück
Oben