tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
3684
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    treki treki ist offline Rookie
    Registriert seit
    Jan 2004
    Beiträge
    9
    Hallo Liebe Shell Experten!
    Ich sitze vor einer Aufgabe die ich alleine leider nicht lösen kann (so weit bin ich noch nicht mit shell)

    Ich möchte ein Shell script erstellen, das in einen bestimmten Ordner die filenamen prüft und mir einen string mit den sequenzen (von-bis) erstellt.
    Ist schwer zu erklären, daher versuche ich es so:

    Ich habe einen Ordner in den mehrere dpx (Bilddateie) liegen z.B.:
    333.0000005.dpx
    333.0000006.dpx
    333.0005002.dpx
    333.0005003.dpx
    333.1112201.dpx
    333.1112202.dpx
    333.1112203.dpx

    jetzt möchte ich, das das shell script diesen Ordner (z.B.333) durchsucht und mir am ende folgenden String ausgibt:
    0000005-0000006,0005002-0005003,1112201-1112203

    also immer "von-bis","von-bis",...

    habt Ihr vielleicht eine Lösung für mich?
    Ich wäre euch unendlich dankbar, da dies meinen Arbeitsaufwand unglaublich verringern würde.


    Schönen Gruß
    Mike
     

  2. #2
    jeipack jeipack ist offline Mitglied Brokat
    Registriert seit
    Feb 2007
    Beiträge
    391
    Hi
    Also ich mach das mal mit meinen sql Dateien:
    Code :
    1
    2
    3
    4
    5
    6
    
    mystring=""
    for item in `ls /home/sqldumps/*.sql`
    do
    mystring=$mystring"-"$item
    done
    echo $mystring
    Dies gibt mir alle Dateinamen mit einem Bindestrich dazwischen auf einer Linie aus.

    Nun müsstest du aber noch die Zeile: mystring=$mystring"-"$item
    mit regex behanden, so dass 1. die Endung wegfällt und 2. in meinem Fall /home/sqldumps/ wegfällt.
    Allerdings habe ich schon so lange nicht mehr mit Regular Expressions gearbeitet, so dass ich dir hier nicht so schnell helfen kann.
    Aber mit ein bisschen googlen bekommst du das hin

    Gruss und viel Erfolg
    jeipack
     

  3. #3
    treki treki ist offline Rookie
    Registriert seit
    Jan 2004
    Beiträge
    9
    Danke jeipack

    jetzt muss ich nur noch herrausfinden wie ich die dateien als sequenzen anzeigen lassen kann
    hat da jemand ne idee?

    Übriegens ich arbeite mit OSX
     

  4. #4
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Versuch's mal so:
    Code bash:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    res=""
    last=""
     
    for i in *; do 
      num="${i%.*}";  # Endung abschneiden
      if [[ "$nr" == +([0-9]) ]]; then
        nr="${num##0}";  # führende Nullen entfernen
        if [[ -z "$last" ]]; then
          res="$num";
        elif [[ $((nr - last)) > 1 ]]; then
          res="$res-$last,$num";
        fi;
        last=$nr;
      else
        res="$res,$num";
      fi
    done
     
    echo "$res"
    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

Ähnliche Themen

  1. Dateinamen auslesen und in Variable speichern
    Von Willi123 im Forum Linux & Unix
    Antworten: 2
    Letzter Beitrag: 22.06.10, 11:10
  2. Liste von Dateinamen mit Shell-Script
    Von thefaxx im Forum Sonstige Sprachen
    Antworten: 5
    Letzter Beitrag: 02.04.09, 08:43
  3. Brauche ein VB oder Shell script Windows Herunterfahren
    Von jackisback im Forum .NET Windows Forms
    Antworten: 4
    Letzter Beitrag: 19.08.07, 21:03
  4. Antworten: 2
    Letzter Beitrag: 20.08.05, 17:30
  5. Antworten: 6
    Letzter Beitrag: 23.11.03, 23:22