Dateien von Ordner A nach Ordner B kopieren nach CSV-Vorlage

C

corehead

Registriert
Thread Starter
Dabei seit
01.12.2004
Beiträge
1
Reaktionspunkte
0
Hallo zusammen, vielleicht kann mir jemand helfen. Wie der Titel schon sagt, suche ich eine Möglichkeit (Software/Script), um Dateien von Ort A nach Ort B zu transferieren, ohne jede Datei von Hand zu verschieben.

Ich habe einen Ordner mit mehreren tausend Produktbildern, hin und wieder möchten Kollegen mehrere Dutzend, teilweise auch mehrere hundert Bilder haben. Da wir keine Datenbank oder ähnliches haben, muss das dann von Hand erledigt werden. Die Anforderungen kommen aber meistens in Excel, von daher liegen die Art-Nr. schon digital vor. Die Bezeichung der Bilddateien stimmt mit der Art-Nr. überein, insofern ist die Basis schon vorhanden.

Jetzt fehlt nur ein kleines Programm, bei dem ich Quell- (evtl. inkl. Subfolders) und Zielordner definiere, die CSV-Datei auswähle und auf START drücke. Falls jemand ein kommerzielles Tool kennt, das solches zu tun vermag, bitte auch melden. Nur eine Individualprogrammierung kommt wg. der Kosten nicht in Frage, aber vielleicht entschließt sich ja jemand, so etwas als Shareware zu erstellen.

Für eine rege Teilnahme danke ich im voraus
Jörg
 
Laß mich mal nachdenken (ich habe noch keinen Mac, aber es ist ja ein "unix")
Ich kann mir aber vorstellen, dass in einer Shell (DOS-Box) es nach folgendem shema funktionieren können...
"> more namederdatei.csv | cp /zielverzeichnis"
# bin mir aber nicht ganz sicher, da ich gerade mein linux nicht zur hand habe!!!!
das "|" zeichen übergibt die ausgabe an den darauffolgenden befehl.
Kann einer genaueres sagen?
Vielleicht muß vorher noch ein "find" laufen.

Gruß
Oliver
 
Zuletzt bearbeitet:
Ich würde das in nem Shellscript machen.

Hier sowas in der Art:

Code:
#!/bin/bash

WD=`pwd`

KEYFILE=$1
shift

FROMDIR=$1
shift

KEYS=`cat $KEYFILE | awk ' BEGIN { FS=";" } { print $1 } '`

for KEY in $KEYS
    do
    
        unset FILES
        unset NEWDIR
        
        NEWDIR=$KEY

        FILES=`ls $FROMDIR/*$KEY*`

        for FILE in $FILES
            do
            
                if [ ! -e $WD/$NEWDIR ] 
                    then
                        echo "Verzeichnis $NEWDIR existiert nicht. Erstelle $WD/$NEWDIR"
                        mkdir $WD/$NEWDIR
                fi
                
                echo "Kopiere $FILE nach $WD/$NEWDIR"
                cp $FILE $WD/$NEWDIR
        done
done

exit

Einfach den Code in einer Datei kopieren (ich hab sie copyByKey.sh genannt). Danach ein "chmod 700 dateiname" ausführen.

Du kannst das Script dann folgendermaßen aufrufen:

copyByKey keyfile /Quellverzeichnis

Das Script liest dann erst das Keyfile, in dem in der ersten Spalte die Werte als Keys gespeichert werden.

Dann sucht das Script sich alle Files deren Dateinamen den Key enthält. Legt da wo man gerade ist ein Unterverzeichnis (mit Key als namen) an und kopiert alle gefunden Files dort rein.

Im Keyfile sollte deine Projektnummer immer in der ersten Spalte stehen. Ansonsten musst du in der Zeile "KEYS=`cat $KEYFILE | awk ' BEGIN { FS=";" } { print $1 } '`" aus dem "$1" ein "$nummerderspalte" machen, also $2,$3,$10 oder so. Als Spaltentrenner wird ein ";" erwartet.

Achtung! Das funktioniert nicht, wenn der Dateiname Leerzeichen enthält!
 
Zuletzt bearbeitet:
...........
 
Zuletzt bearbeitet:
Schön... (das script)
Ich hoffe es hilft..
 
Zurück
Oben Unten