Script soll die letzten 1000 Fotos löschen wenn Ordner>10
-
- Beiträge: 20
- Registriert: 03.12.2007 15:31:57
Script soll die letzten 1000 Fotos löschen wenn Ordner>10MB
Hallo Zusammen
Ich habe ein Programm, dass regelmässig Bilder in den Ordner /tmp/pictures speichert. Die Titel der Dateien sind alle vom Syntax gleich z.B: 2007-11-3-16-4-52.jpg
Nun möchte ich gerne ein Cron Script schreiben, dass jeden Monat prüft ob der Ordner ../pictures >10MB ist, falls ja sollen die letzten 1000 Fotos gelöscht werden.
Wie kann ich das am besten lösen, ich hab noch nicht viel Erfahrung mit Scrips, mit Debian selbst schon.
Danke für eure Hilfe
Michi
Ich habe ein Programm, dass regelmässig Bilder in den Ordner /tmp/pictures speichert. Die Titel der Dateien sind alle vom Syntax gleich z.B: 2007-11-3-16-4-52.jpg
Nun möchte ich gerne ein Cron Script schreiben, dass jeden Monat prüft ob der Ordner ../pictures >10MB ist, falls ja sollen die letzten 1000 Fotos gelöscht werden.
Wie kann ich das am besten lösen, ich hab noch nicht viel Erfahrung mit Scrips, mit Debian selbst schon.
Danke für eure Hilfe
Michi
- ThoRHam
- Beiträge: 113
- Registriert: 12.11.2006 12:57:33
- Lizenz eigener Beiträge: GNU General Public License
- Wohnort: Rhein-Main
-
Kontaktdaten:
Hallo Maverick83,
habe zur Erkennung der Ordner Größe schonmal einen Ansatz:
Vielleicht kannst du darauf aufbauend mit deinen Skript weiter kommen
Gruß Thor
habe zur Erkennung der Ordner Größe schonmal einen Ansatz:
Code: Alles auswählen
#!/bin/bash
wert=`du /tmp/pictures| cut -f1`
echo Ordner ist $wert groß
if [ $wert -ge 10000 ]
then
echo einige Bilder werden entfernt
else
echo Ordner ist noch kleiner als 10MB
fi
Gruß Thor
-
- Beiträge: 260
- Registriert: 04.12.2006 11:37:59
-
- Beiträge: 20
- Registriert: 03.12.2007 15:31:57
Danke für eure Beispiele ich hab es nun folgendermassen gelöst:
Sobald der Ordner pictures grösser als 1MB wird werden die letzten 100 Fotos gelöscht.
Danke und einen schönen Tag
Michi
Code: Alles auswählen
#!/bin/sh
# This Script removes old pictures from the directory /tmp/pictures/
size=`stat -c %s /tmp/pictures/`
if test $size -gt 1000000
then
cd /tmp/pictures/
ls -t ./ | tail -100 | xargs rm
else
fi
Danke und einen schönen Tag
Michi
Weiß nicht, ob ich das ganze so mit stat machen würde.
...unterschiedliche Resultate...
Code: Alles auswählen
daniel@daniel-laptop:~$ stat -c %s bilder/
4096
daniel@daniel-laptop:~$ du -ms bilder/
187 bilder/
daniel@daniel-laptop:~$ du -hs bilder/
187M bilder/
Oh, yeah!
-
- Beiträge: 20
- Registriert: 03.12.2007 15:31:57
- I.C.Wiener
- Beiträge: 674
- Registriert: 19.08.2003 18:45:35
Moin,
es gibt da ein kleines Logikproblem.
Du musst die Abfrage und das Löschen in eine While-Schleife packen, damit es sinn ergibt.
Mit einem reinen If kann es vorkommen, dass auch nach dem Löschen der 1000 Bilder der Ordner noch größer als 10MB ist. Also While, damit er solange 1000 Bilder löscht, bis der Ordner kleiner als 10MB ist (wobei ich dann kleinere Zahlen wählen würde).
MfG
es gibt da ein kleines Logikproblem.
Du musst die Abfrage und das Löschen in eine While-Schleife packen, damit es sinn ergibt.
Mit einem reinen If kann es vorkommen, dass auch nach dem Löschen der 1000 Bilder der Ordner noch größer als 10MB ist. Also While, damit er solange 1000 Bilder löscht, bis der Ordner kleiner als 10MB ist (wobei ich dann kleinere Zahlen wählen würde).
MfG
Who is... LAIN?
-
- Beiträge: 20
- Registriert: 03.12.2007 15:31:57
hi,
z.B. so (ausprobieren, ob du -d brauchst):
z.B. so (ausprobieren, ob du -d brauchst):
Code: Alles auswählen
size=`du -bs /tmp/pictures/ | cut -f 1`
size=`du -bs /tmp/pictures/ | cut -f 1 -d ' '`
Beware of programmers who carry screwdrivers.
Genau, mit cut oder awk einfach "den Rest" abschneiden.
Und dann vielleicht doch noch das ganze in eine while-Schleife packen, so wie es I.C.Wiener schon gesagt hat.
Code: Alles auswählen
daniel@daniel-laptop:~$ du -bs bilder/ | awk '{print $1}'
190581851
Oh, yeah!