![](https://seccdn.libravatar.org/avatar/735ea797d876adb026ae955e8adbf597.jpg?s=120&d=mm&r=g)
On Die, Jan 30, 2001 at 07:16:50 +0100, Bruno Semrau wrote:
* Michael Hilscher
[010130 15:58]: Hallo,
ich m?chte einen Ordner st?ndig auf neue Dateien ?berpr?fen lassen. Wird ein neues File gefunden, soll die Datei ?ber /bin/sh aufgerufen und danach gel?scht werden.
Wie l?sst sich das am besten realieseren?
Bruno, Dein mutt spuckt einen falschen charset aus. In Deiner Mail steht us-ascii, es muss iso-8859-1 sein (bei Michael stimmte er noch).
hier ist ein kleines Script (ungetestet), dass alle 20 Sekunden im aktuellen Verzeichniss nachschaut, ob sich sich einen neue Datei darin befindet.
----------------------------------------- #!/bin/sh last="`ls -t *.* | head -1`" 2>/dev/null ^ Das ist bei Linux unnötig, im Gegenteil: Dateien ohne Punkt werden ignoriert. ^^^^^^^^^^^ Das muss innerhalb der `` stehen, sonst kriegst Du Fehler von ls trotzdem zu sehen.
while sleep 20; do ^^^^^^^^ halte ich an dieser Stelle für ungünstig, da dann immer (auch wenn noch weitere Dateien vorhanden sind) 20 Sekunden gewartet wird.
this="`ls -t *.* | head -1`" 2>/dev/null
Kommentare wie oben
if test "$this" != "$last"; then last="$this" if test -x "$this"; then
In dieser Version könnte $this auch ein Verzeichnis sein. Der Test -x ist nicht nötig, wenn die Datei über die Shell ausgeführt werden soll.
"$this" rm "$this" fi fi done
Warum so kompliziert? Was machst Du mit $last? Es wird doch nur gesetzt, aber nie verwendet. Ausserdem: man last, das ist ein Kommando, sollte also nicht als Variable verwendet werden. Meine Version (ungetestet): while true; do datei="`ls -t 2>/dev/null | head -1`" if test -f "$datei"; then $SHELL "$datei" rm -f "$datei" fi test -z "$datei" && sleep 20 done Das Ganze in ein Script, welches Du mit nohup scriptname & startest. Auch hier sind noch einige Feinheiten ungeklärt: Dateinamen mit CR, wohin mit Fehlermeldungen, Subdirectories, ... Jan