DateiDatum ermitteln, DatumsVerzeichnis erstellen und reinkopieren/-verschieben

Post Reply
Message
Author
Laie

DateiDatum ermitteln, DatumsVerzeichnis erstellen und reinkopieren/-verschieben

#1 Post by Laie »

Hallo an alle,

ich selbst habe zwar schon mit Linux(Ubuntu & vor etlichen Jahren mal Suse) "rumgespielt", bin aber über die Standards noch nicht hinaus gekommen...

jetzt stehe ich wegen meinem Studium vor einem kleineren Problem... ich muss im rahmen eines WebPraxisprojekts ein Bildverzeichnis aufräumen und effizienter machen... da sind momentan 200k JPGs drin.

So, ich habe mir gedacht da jeden Tag etwa ~500-1000 Bilder dazu kommen verteile ich das ganze nach Datum und Uhrzeit.

Was ich also brauche ist eine Shellfunktion die das Datum der vorhandenen Dateien ausliest mit dem Datum ein Verzeichnis erstellt... und in der nächsten Ebene die Dateien in ein Verzeichnis der STUNDE reinkopiert.

also mal bildlich
bild1.jpg eintragsdatum 02.10.2008 Uhrzeit 22:33
bild2.jpg eintragsdatum 02.10.2008 Uhrzeit 21:12
bild3.jpg eintragsdatum 01.10.2008 Uhrzeit 8:12

bild1 soll in Ordner /02102008/22/
bild2 soll in Ordner /02102008/21/
bild3 soll in Ordner /01102008/08/

mit PHP bekomme ich das leider nicht hin, wegen dem Timeout des Webservers… deshalb muss es über die Shell sein.

Ansonsten falls das nicht so einfach gehen sollte, hättet ihr eine Idee wie man 200.000 Dateien am besten in eine Struktur packt? oder generell wie man am besten große Dateimengen effizient organisiert, so das Linux performancemässig besser mit klar kommt?


Gruss & Danke

Benjamin

User avatar
Janka
Posts: 3585
Joined: 11. Feb 2006 19:10

#2 Post by Janka »

Die Shell wird per CGI genau dasselbe Timeoutproblem haben. Wenn du keinen echten Shellzugriff hast, musst du die Arbeit halt in mehreren Stücken machen.

Bei echtem Shellzugriff kannst du natürlich den PHP-Interpreter auch direkt daraus starten, wenn dir diese Sprache eher liegt.

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

Laie

danke

#3 Post by Laie »

Ok, danke das geht sogar, wusste ich nicht :)

vielleicht noch nen alternativen tip wie ich die dateien organisieren könnte? weil im cache-ordner hätte ich auch noch einiges an dateien, thumbnails und so.

per google finde ich leider keine guten links, wie ein guter dateibaum für cachefiles aussehen könnte.

User avatar
Janka
Posts: 3585
Joined: 11. Feb 2006 19:10

#4 Post by Janka »

Dein Wunsch erfordert etwas mehr Spucke. Fang mit sowas an:

Code: Select all

for FILE in *
do
  DATETIME=$(stat -c%z $FILE)
  DATE=$&#40;cut -d\  -f1 <<<$DATETIME&#41;
  HOUR=$&#40;cut -d\  -f2 <<<$DATETIME |cut -d&#58; -f1&#41;

  mkdir -p $DATE/$HOUR
  mv $FILE $DATE/$HOUR
done
Wichtig: Anzahl der Leerzeichen hinter -d\ beachten!

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

Laie

.

#5 Post by Laie »

Ok, vielen dank, hat geklappt :)

Gruss

Post Reply