Per Shell Script CSV-Datei auslesen, anschliessend Dateien umbenennen

Diskutiere Per Shell Script CSV-Datei auslesen, anschliessend Dateien umbenennen im Shell-Skripte Forum im Bereich Programmieren unter Linux/Unix; Hallo Board, ich habe eine CSV datei, in der Name;Vorname;RECNUMBER;AUSBILENDE;Geburtsdatum;Geschlecht;Klasse...

  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

    Anzeige

    Wenn du mehr über Linux erfahren möchtest, dann solltest du dir mal folgende Shellkommandos anschauen.


    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. marce

    marce Kaiser

    Dabei seit:
    01.08.2007
    Beiträge:
    1.279
    Zustimmungen:
    21
    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.279
    Zustimmungen:
    21
    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.279
    Zustimmungen:
    21
    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.279
    Zustimmungen:
    21
    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. #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...
     
  16. #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. shell script csv datei auslesen

    ,
  2. shellscript csv

    ,
  3. bash csv auslesen

    ,
  4. csv-datei umschreiben mittels shellscript,
  5. unix csv auslesen,
  6. linux shell script csv datei schreiben lesen,
  7. bash csv datei,
  8. csvs auslesen linux,
  9. csv datei öffnen shell,
  10. bash mit csv dateien arbeiten,
  11. inhalt von windows datei in linux datei umschreiben,
  12. terminal öffnen bash und Inhalte ausgeben,
  13. csv per skript umschreiben,
  14. shell script csv dokument ändern,
  15. script kopiere inhalte aus csv dateien aus Ordern untereinander schreibe dateinmane in spalte a,
  16. linux bash csv deutsch,
  17. bash copy csv line in csv,
  18. csv datei python in shell darstelle,
  19. csv befehl laden linux,
  20. shell scrip csv datei,
  21. bash tabelle in csv ausgeben,
  22. linux shell csv auslesen,
  23. csv verarbeiten linux,
  24. linux for schleife via csv datei,
  25. csv bash script datum benennen
Die Seite wird geladen...

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

  1. mehrsprachiges Shellscript - wie umsetzen?

    mehrsprachiges Shellscript - wie umsetzen?: Hallo, wie zieht man am besten mehrsprachige Scripte auf? Zuerst alle Texte in Variablen legen und diese später im Script aufrufen, je nach...
  2. 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...
  3. 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...
  4. 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...
  5. Variable aus ShellScript in Latexvorlage einfügen

    Variable aus ShellScript in Latexvorlage einfügen: Hallo, wie kann ich Variablen aus einem Shellscript an bestimmte Stellen in eine Vorlage einfügen. Sollte ich dafür spezielle Platzhalter in...
  1. Diese Seite verwendet Cookies um Inhalte zu personalisieren. Außerdem werden auch Cookies von Diensten Dritter gesetzt. Mit dem weiteren Aufenthalt akzeptierst du diesen Einsatz von Cookies.
    Information ausblenden