Per Shell Script CSV-Datei auslesen, anschliessend Dateien umbenennen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von sep-karl, 15.10.2008.

  1. #1 sep-karl, 15.10.2008
    sep-karl

    sep-karl Jungspund

    Dabei seit:
    15.10.2008
    Beiträge:
    12
    Zustimmungen:
    0
    Hallo Board,

    ich habe eine CSV datei, in der

    Name;Vorname;RECNUMBER;AUSBILENDE;Geburtsdatum;Geschlecht;Klasse
    Mustermann,Max,123456789;01.01.10;01.01.1990;M;BF81_01
    stehen.

    im selben Ordner habe ich Bilder, die "Klasse".jpg heissen also z.B. BF81_01.jpg nun möchte ich diese Bilder umbenennen in Name_Vorname_Geburtsdatum.jpg!

    Da das manuell sehr Zeitaufwendig wäre, möchte ich dieses bitte per Shellscript tun.

    vielen Dank schonmal im Voraus für eure Hilfe!!

    gruß Sep
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.056
    Zustimmungen:
    8
    schau Dir mal cut an...
     
  4. #3 sep-karl, 15.10.2008
    sep-karl

    sep-karl Jungspund

    Dabei seit:
    15.10.2008
    Beiträge:
    12
    Zustimmungen:
    0
    ok, habe jetzt mit "cut -d. -f 1,2,5 BF81.csv"
    die Felder die ich brauche ausgelesen, jetzt müsste ich diese noch ins richtige format kriegen und anschliessend müsste ich die Bilder dann vermutlich mit "move" umbenennen, oder ?
    Aber das Shellscript muss ja auch dem Bild den richtigen Namen zuordnen können, also brauche ich ja auch noch die 7. Zeile...
    und wie würde es dann weiter gehen ??wie kann ich dem Script dann mitgeben, das es die datei nach dem alten namen der Bilder durchsucht und den Bildern dann den neuen Namen zuweist ??

    gruß
     
  5. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.056
    Zustimmungen:
    8
    Du hast eine Liste mit Daten, die gehst Du zeilenweise durch.

    Aus jeder Zeile extrahierst Du dir den 1,2 und 5. Spalteneintrag.

    Die baust Du zusammen zum neuen Dateinamen des Bildes.

    "Dann" extrahierst Du Dir den 7. Spalteneintrag und bennnest das Bild mit diesem Namen um in den neuen Dateinamen.
     
  6. #5 sep-karl, 15.10.2008
    sep-karl

    sep-karl Jungspund

    Dabei seit:
    15.10.2008
    Beiträge:
    12
    Zustimmungen:
    0
    das mit dem extrahieren habe ich jetzt ja mit cut hingekriegt, aber wie baue ich die am einfachsten zusammen und wie bennene ich das Bild denn dann danach um ?? sorry, bin nicht so der Experte im Shell-Script Bereich...
     
  7. #6 slackfan, 15.10.2008
    slackfan

    slackfan König

    Dabei seit:
    18.04.2006
    Beiträge:
    809
    Zustimmungen:
    0
    Ort:
    Bonn
    Code:
    #!/bin/bash
    
    for I in `cat csv.csv` ; do
        mv `echo $I | cut -d";" -f1`".jpg" `echo $I | cut -d";" -f2`"_"`echo $I | cut -d ";" -f3`".jpg"
    done
    
    
    oder so Ähnlich. Geht bestimmt eleganter.
     
  8. #7 sep-karl, 15.10.2008
    sep-karl

    sep-karl Jungspund

    Dabei seit:
    15.10.2008
    Beiträge:
    12
    Zustimmungen:
    0
    #!/bin/bash
    for I in `cat BF81.csv` do
    move `echo $I | cut -d"," -f7.jpg `echo $I | cut -d"," -f1`"_"`echo $I
    done

    ./umbenennen.sh
    ./umbenennen.sh: line 3: syntax error near unexpected token `move'
    ./umbenennen.sh: line 3: ` move `echo $I | cut -d"," -f7.jpg `echo $I | cut -d"," -f1`"_"`echo $I | cut -d "," -f2`.jpg"'

    habe das jetzt so probiert, er gibt dann folgendes aus....
     
  9. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.056
    Zustimmungen:
    8
    wieso move?
     
  10. #9 sep-karl, 15.10.2008
    sep-karl

    sep-karl Jungspund

    Dabei seit:
    15.10.2008
    Beiträge:
    12
    Zustimmungen:
    0
    egal, ob mv oder move es kommt immer die gleiche Fehlermeldung...
     
  11. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.056
    Zustimmungen:
    8
    vergleiche noch mal die Version von Dir mit der oben geposteten. Ich finde schon mal mindestens einen relevanten Unterschied...
     
  12. #11 slackfan, 15.10.2008
    slackfan

    slackfan König

    Dabei seit:
    18.04.2006
    Beiträge:
    809
    Zustimmungen:
    0
    Ort:
    Bonn
    Dann drösle es halt mal auf und vergleiche Wunsch mit Resultat:

    Code:
    #!/bin/bash
    
    for I in `cat csv.csv` ; do
        echo "====================="
    
        EINGABE=`echo $I | cut -d";" -f1`".jpg"
        echo $EINGABE
    
        AUSGABE=`echo $I | cut -d";" -f2`"_"`echo $I | cut -d ";" -f3`".jpg"
        echo $AUSGABE
    
        VERBUND=$EINGABE  $AUSGABE
        echo $VERBUND
    
        BEFEHL=mv $VERBUND
        echo $BEFEHL
    
        exec $BEFEHL
    done
     
  13. #12 sep-karl, 15.10.2008
    Zuletzt bearbeitet: 15.10.2008
    sep-karl

    sep-karl Jungspund

    Dabei seit:
    15.10.2008
    Beiträge:
    12
    Zustimmungen:
    0
    Die csv datei ist mit "," getrennt und nicht mit ";"
    Code:
    #!/bin/bash
    
    for I in `cat BF81.csv` ; do
        echo "====================="
    
            EINGABE=`echo $I | cut -d"," -f7`".jpg"
                echo $EINGABE
    
            AUSGABE=`echo $I | cut -d"," -f1`"_"`echo $I | cut -d "," -f2`".jpg"
                echo $AUSGABE
    
            VERBUND=$EINGABE  $AUSGABE
                echo $VERBUND
    
            BEFEHL=mv $VERBUND
                echo $BEFEHL
    
            exec $BEFEHL
             done

    ----

    folgende Ausgabe:

    Code:
    ./test.sh
    =====================
    .jpg_01
    vorname_nachname.jpg
    ./test.sh: line 12: vorname_nachname.jpg: command not found
    
    mv
    mv: Fehlendes Dateioperand
    âmv --helpâ gibt weitere Informationen.
     
  14. #13 slackfan, 15.10.2008
    slackfan

    slackfan König

    Dabei seit:
    18.04.2006
    Beiträge:
    809
    Zustimmungen:
    0
    Ort:
    Bonn
    Mein Fehler,

    das muss VERBUND=$EINGABE" "$AUSGABE lauten.
    Ist beim Copy&Paste was schiefgelaufen. Bei BEFEHL ist es das Selbe.
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. #14 sep-karl, 15.10.2008
    Zuletzt bearbeitet: 15.10.2008
    sep-karl

    sep-karl Jungspund

    Dabei seit:
    15.10.2008
    Beiträge:
    12
    Zustimmungen:
    0
    ok, vielen Dank, das funktioniert soweit schonmal sehr gut, hatte noch einen Fehler drin, den ich aber selber beheben konnte...

    jetzt brauche ich nur noch ne Schleife oder ähnliches drumherum, momentan macht er das nur für die Person die in der ersten Zeile der csv datei steht er soll das ja für alle Leute machen, die in der CSV datei stehen.... oder aber, er soll die erste Zeile der csv datei löschen und danach nochmal von vorne anfangen, das würde auch gehen...
     
  17. #15 slackfan, 15.10.2008
    slackfan

    slackfan König

    Dabei seit:
    18.04.2006
    Beiträge:
    809
    Zustimmungen:
    0
    Ort:
    Bonn
    Die for-Schleife sollte eigentlich genau dafür sorgen :think:
    Probier mal
    Code:
    while read I; do 
        EINGABE ... BEFEHL 
    done < "datei.csv"
    anstatt der for-Schleife
     
Thema: Per Shell Script CSV-Datei auslesen, anschliessend Dateien umbenennen
Besucher kamen mit folgenden Suchen
  1. csv-datei umschreiben mittels shellscript

    ,
  2. unix csv auslesen

    ,
  3. linux shell csv datei öffnen

    ,
  4. bash csv auslesen,
  5. csv datei lesen shell,
  6. csv dateien mit shell script auswerten,
  7. mit bash csv auslesen,
  8. csv bash auswerten
Die Seite wird geladen...

Per Shell Script CSV-Datei auslesen, anschliessend Dateien umbenennen - Ähnliche Themen

  1. Shell Script Problem

    Shell Script Problem: Hallo zusammen, ich arbeite momentan mit einem Plagiat Tool, die ich über Git Bash ausführe. Es wird im Endeffekt ein Link generiert, die ich...
  2. Shellscript für rotierende Datensicherung

    Shellscript für rotierende Datensicherung: Hallo, ich beschäftige mich erst seit ein paar Wochen mit der Shell und habe mich entschlossen meine ersten Scripterfahrungen in diesem kleinen...
  3. Shellscript unerwartetes Dateiende

    Shellscript unerwartetes Dateiende: Hallo zusammen, folgendes Script führe ich in einer .bat via cygwin und curl aus. Beim Ausführen erhalte ich die einen Syntaxfehler:...
  4. shell-script mit plink starten

    shell-script mit plink starten: Hallo, auf meinem kleinen QNAP-Backupserver möchte ich von meinem Windows 7 PC mittels Windows-Batch ein kleines shell script starten. So sieht...
  5. Einfaches Shellscript - dateinamen ändern

    Einfaches Shellscript - dateinamen ändern: Hey, kann mir jemand vielleicht bei diesem miniscript helfen? ich habe dateien die folgendermaßen aussehen MM-DD-YY-dateiname und...