bash oder ash Hilfe gesucht

Status
Für weitere Antworten geschlossen.

MaTriX

Benutzer
Mitglied seit
23. Dez 2008
Beiträge
51
Punkte für Reaktionen
0
Punkte
0
Ich mal wieder mit einen Scripts =)

Hab momentan folgendes vor:

Habe einige Ordner mit Musik sowie anderen Inhalten ;)

Nun möchte ich ein Script schreiben welches regelmäßig die eingegebenen Ordner ausließt (Order und/oder Dateien) und nach dem Erstellungsdatum oder einem anderen sinnvollen Datum schaut und wenn dieser größer ist als die eingestellte Deadtime, soll es gelöscht werden.

Ich denke es ist ganz simpel, ich als Anfänger hab da aber meine Probleme, oder anders gesagt, ich habe noch keine gescheiten Quellen dazu gefunden.

Über eine Unterstützung würd ich mich freuen.
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
z.B.
Code:
find /volume1/ -amin +10
listet alle files unter /volume1 auf, bei denen der letzte Zugriff mehr als 10min her ist. Im Manual (http://linux.about.com/od/commands/l/blcmdl1_find.htm) findest du weitere Optionen. Allerdings kann es sein, dass das default find, das mit der Firmware geliefert wird, nicht alle Optionen bietet. Obiges funzt sicher mit der ipkg Version von find
find bietet auch die Möglichkeit mittels -exec einen Befehl pro Fund auzuführen (z.B. rm)
 

MaTriX

Benutzer
Mitglied seit
23. Dez 2008
Beiträge
51
Punkte für Reaktionen
0
Punkte
0
oh cool,

werd ich gleich mal testen
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
z.B.
Code:
[FONT=monospace]
[/FONT]find /volume1/test -amin +10 -exec rm {} \;
Wichtig test darf erstmal nur unwichtiges enthalten. Lass das erst auf ein Verzeichnis mit wichtigen Daten los, wenn du sicher bist, dass du nix löscht was du noch brauchst. Es wäre katastrophal diesen Befehl auf / anzuwenden
 

MaTriX

Benutzer
Mitglied seit
23. Dez 2008
Beiträge
51
Punkte für Reaktionen
0
Punkte
0
jo klar =)

Hab ein Test Dir mit daten und Ordnen.

Ich sehe da nur ein Problem, -admin geht nicht

Rich (BBCode):
BusyBox v1.1.0 (2010.01.23-20:28+0000) multi-call binary

Usage: find [PATH...] [EXPRESSION]

aber -mtime würde gehen, jedoch ist da das problem das der mir nur genau den zeitpunkt auspuckt.
Rich (BBCode):
-mtime n
    File's data was last modified n*24 hours ago.

heisst für ihn, wenn die datei vor 10 Tage erstellt war, diese nicht bei der eingabe von 11 sichtbar ist.

Entweder ich müsste das Script jeden Tag ausführen um zu sagen: alle vor 30 Tagen, oder eine Spanne müsste man eingeben können.
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Ich habe oben geschrieben, dass es mit dem default find nicht klappen könnte. Dem scheint so zu sein. Installier dir ipkg und hol dir das entsprechende Paket (ipkg install findutils). Mehr zur Installation und den Voraussetzungen für ipkg findest du in unserem Wiki
 

MaTriX

Benutzer
Mitglied seit
23. Dez 2008
Beiträge
51
Punkte für Reaktionen
0
Punkte
0
thx,

ipkg ist mir bekannt ;) werde es gleich mal angehen

Edit:

hab es mal installiert und weiter getestet

Rich (BBCode):
for file in $(find /volume1/test -maxdepth 1 -mtime +20);
do
 rm -r $file
done

Scheint zu funktionieren, der spuckt mir jetzt nur die aus die älter als 20 Tage sind und auch nur den Ordner und nicht den Inhalt.
Werde es nun mal weiter testen...
 
Zuletzt bearbeitet:

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0

MaTriX

Benutzer
Mitglied seit
23. Dez 2008
Beiträge
51
Punkte für Reaktionen
0
Punkte
0
hey itari ;)

Ich weiss, hab ich auch probiert, habe mich nur vertippt im Post.

Lag aber vieleicht am +n bzw. -n.

Das letzte Script im Post funktioniert bei mir aber.

Dann aber halt mit mtime um dies in Tagen auszudrücken.
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat