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.
move per timestamp
hi,
so ganz klar ist mir die Aufgabe nicht, aber evt. kannst du sowas brauchen:
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).
setzt die Variable $ALTER auf das Alter der Datei $DATEI in Sekunden.
so ganz klar ist mir die Aufgabe nicht, aber evt. kannst du sowas brauchen:
Code: Alles auswählen
find . -mmin +60 -exec ./verschieb '{}' \;
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`))
Beware of programmers who carry screwdrivers.
@cosmac
cu.
ich glaube das geht in die richtige Richtung - allerdings ist mir jetzt der letzte Teil nicht ganz klar.so ganz klar ist mir die Aufgabe nicht, aber evt. kannst du sowas brauchen:
mit "dadrin" meinst du das "./verschieb"-script oder ?Dadrin
kommt der Dateiname als $1 an.
das ist die Sache wo ich jetzt nicht ganz verstehe, kannst du das etwas genauer schildern ?Den müsstest du dann mit
"mv" bearbeiten (oder was auch immer).
cu.
also mal angenommen, alle Dateien mit einem bestimmten
Anfangsbuchstaben sollen nach B bzw. C, dann könnte das
verschieb-Script so aussehen:
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.