move per timestamp

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
rol
Beiträge: 264
Registriert: 10.08.2003 14:54:08

move per timestamp

Beitrag von rol » 06.06.2007 18:09:28

hallo,

ich habe ein Problem und komme nicht mehr weiter :?
vielleicht hat jemand eine Idee oder Hinweis oder hatte gar sowas schonmal.

Ich habe ein Verzeichnis (A) in welchem kontinuierlich Datein eintreffen (wird von einem Prozess gesteuert). Die Datein müssen jetzt aber "sortiert" werden, je nach Dateiname sollen sie entweder in den Ordner B oder C verschoben werden.

Meine erste Idee war das ganz einfach mit dem mv-Kommando zu machen; ich nahm an, wenn die Datei geschrieben wird ist sie für diese Zeit gelockt und mv wird sie überspringen - leider ist dem aber nicht so, es landen nämlich in den beiden Ordnern B und C unvollständige Dateien.

Meine jetzige Idee war, daß man ein script, programm o.ä. startet und dieses dann schaut was die akt. Systemzeit ist (akt. Stunde wäre ausreichend) und dann alle Dateinen die eine Stunde zurück liegen nach obiger Selektion zu verschieben - ist sowas machbar (und wenn ja wie und mit welcher Software am besten) ??

thx.
cu.

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Beitrag von cosmac » 06.06.2007 21:10:11

hi,

so ganz klar ist mir die Aufgabe nicht, aber evt. kannst du sowas brauchen:

Code: Alles auswählen

find . -mmin +60 -exec ./verschieb '{}' \;
prüft jede Datei im aktuellen Verzeichnis und wenn sie älter als
60 Minuten ist, wird das Script "verschieb" gestartet. Dadrin
kommt der Dateiname als $1 an. Den müsstest du dann mit
"mv" bearbeiten (oder was auch immer).

Code: Alles auswählen

ALTER=$((`date +%s` - `stat -c %Y $DATEI`))
setzt die Variable $ALTER auf das Alter der Datei $DATEI in Sekunden.
Beware of programmers who carry screwdrivers.

rol
Beiträge: 264
Registriert: 10.08.2003 14:54:08

Beitrag von rol » 08.06.2007 15:12:42

@cosmac
so ganz klar ist mir die Aufgabe nicht, aber evt. kannst du sowas brauchen:
ich glaube das geht in die richtige Richtung - allerdings ist mir jetzt der letzte Teil nicht ganz klar.
Dadrin
kommt der Dateiname als $1 an.
mit "dadrin" meinst du das "./verschieb"-script oder ?
Den müsstest du dann mit
"mv" bearbeiten (oder was auch immer).
das ist die Sache wo ich jetzt nicht ganz verstehe, kannst du das etwas genauer schildern ?

cu.

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Beitrag von cosmac » 08.06.2007 16:02:58

also mal angenommen, alle Dateien mit einem bestimmten
Anfangsbuchstaben sollen nach B bzw. C, dann könnte das
verschieb-Script so aussehen:

Code: Alles auswählen

#!/bin/sh

echo "$1" ist alt genug

ANFANGSBUCHSTABE=${1:2:1}

case "$ANFANGSBUCHSTABE" in
   b)
      mv "$1" ./B
      ;;
   c)
      mv "$1" ./C
      ;;
   *)
      mv "$1" ./unbekannt
esac
Beware of programmers who carry screwdrivers.

Antworten