Probleme mit Shell-Script (Listen, Strings, etc.)

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von sideshow, 04.02.2008.

  1. #1 sideshow, 04.02.2008
    sideshow

    sideshow Grünschnabel

    Dabei seit:
    04.02.2008
    Beiträge:
    1
    Zustimmungen:
    0
    Schönen guten Morgen!

    Ich habe leider einige kleine Probleme mit einem Shell-Script - bzw. weiss ich nicht wie ich richtig ansetzen bzw. weiter machen soll...

    Hier die Problemstellung:
    Ich möchte mit einem Shell-Script (bash im übrigen) einen Ordner durchsuchen lassen. In diesem sollen alle Bilder (sind voraussichtlich .gif, .jpg und .png) erfasst werden. Jetzt müsste ich aus diesen Bildnamen folgenden String zusammensetzen:

    Code:
    ?name[]=bildname1&name[]=bildname2&name[]=bildname3
    Dieser String wird dann an ein PHP-Script mittels GET übermittelt und von diesem Script bekomme ich auch wieder einen String zurück, der sieht ungefähr so aus:

    Code:
    1001#1002#1003
    Jetzt müssten die Namen der Bilder aus dem Ordner nach folgendem Schema ersetzt werden:

    Code:
    bildname1.jpg  -> 1001.jpg
    bildname2.gif   -> 1002.gif
    bildname3.png -> 1003.png
    
    So, zu guter letzt werden nun die umbenannten Bilder in einen anderen Ordner verschoben.

    Soviel zur Aufgabenstellung... Leider hakt es bei mir an vielen Ecken und Enden. In PHP bin ich sehr fit, aber bei Shell-Scripten beisst es dann doch leider aus... :(

    Soweit (na ja... recht weit ist das nicht...) bin ich schon:
    Code:
    # Get local picture files
    cmd="echo";
    find $transfer_local/$pic_dir/crea2web -name '*.gif' -exec $cmd {} \;
    
    Leider hab ich hier schon das Problem, das ich nur alle Dateien mit Suffix .gif, .jpg und .png auslesen möchte. Das bekomme ich leider nicht hin.

    Und mein größtes Problem: wie kann ich den String zusammenbauen?

    Ich hoffe, mir kann hier jemand einen Wink in die richtige Richtung geben!

    Vielen Dank im Voraus!
    sideshow
     
  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. #2 Wolfgang, 04.02.2008
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Die Dateien findest du im einfachsten Fall mit find.
    find arbeitet alle Bedingungen von Links nach Rechts ab und kennt logisches und/oder.

    Zum Ersten teil ein Beispiel.
    Code:
    P=/suchpath/
    # Alles in ein Array
    A=($(find "$P" -type f -iname"*jpg" -o -iname "*gif" -o -iname "*png");
    # String-Array für einzelne Elemente
    I=0;
    S=("");
    ST='name[]=';
    for i in ${A[*]};do
         if [ $I -eq 0 ];
                then                              #erstes Element=Stringanfang
                S='?'${ST}$(basename $i);
                else 
                S=$S'&'${ST}$(basename $i);
                fi;((I++));
                done; 
    # Testausgabe
    echo $S
    
    
    Du hast nun alle Dateien im Array ${A[*]};
    Einfach den Rückgabestring am # splitten und in ein zweites Array füllen.
    Stichwort IFS oder eben mit Variablenexpansion.
    Code:
    ${V//#/ }
    
    Ersetzt z.B. alle # durch Leerzeichen in der Variable V; ;)

    Nun kannst du über Index von A und Dem zweiten Array iterieren und deine Actionen ausführen.

    Das lass ich aber mal für dich übrig.
    Willst ja nicht immer fragen müssen gelle. ;)

    Schau dir die Manpage zu basename und mv an.
    Wie das Array in der Bash erzeugt wird siehst du an meinem Beispiel.

    Gruß Wolfgang
    PS Ach ja, Leerzeichen im Pfad oder Filename habe ich hier sträflich missachtet, aber find sein -print0 und xargs helfen dir weiter.
     
Thema:

Probleme mit Shell-Script (Listen, Strings, etc.)

Die Seite wird geladen...

Probleme mit Shell-Script (Listen, Strings, etc.) - Ähnliche Themen

  1. grub-pc Probleme bei upgrade

    grub-pc Probleme bei upgrade: Hallo, ich habe beim dist-upgrade folgendes Problem: ---------- Nach dieser Operation werden 0 B Plattenplatz zusätzlich benutzt. Trigger für...
  2. Probleme mit YUM

    Probleme mit YUM: Hallo, ich habe CentOs 7 als Dualboot mit Windows 7 auf einen Dell Latitude E5510 installiert. Dies hat soweit auch alles geklappt. Leider habe...
  3. Forscher analysieren Durchsatzprobleme im Linux-Scheduler

    Forscher analysieren Durchsatzprobleme im Linux-Scheduler: Eine Gruppe von Forschern hat Fälle identifiziert, in denen der Scheduler im Linux-Kernel falsche Entscheidungen trifft und die CPUs nicht so gut...
  4. München: LiMux als Sündenbock für IT-Probleme?

    München: LiMux als Sündenbock für IT-Probleme?: Im Münchner Stadtrat soll später in diesem Jahr erneut über den Einsatz von Linux in der Stadtverwaltung diskutiert werden. Die Grünen vermuten,...
  5. BSI-Audit findet keine akuten Probleme in OpenSSL

    BSI-Audit findet keine akuten Probleme in OpenSSL: Das Bundesamt für Sicherheit in der Informationstechnik hat OpenSSL auf seine Sicherheit untersuchen lassen. Die Analyse zeigt vor allem, dass die...