Regex Problem - Teilausschnitt anzeigen

Hallo Zusammen,

Auf der Festplatte befindet sich die folgende Datei:
./folder/subfolder/subsubfolder/90-33-22.jpg

Ich möchte nur ein Teil des Dateinamens auslesen.
./folder/subfolder/subsubfolder/?-33-22.jpg

#!/bin/bash

tmp=""

for i in $(find ./ -name "*.jpg")
do
tmp=${i%.*}
echo $tmp
done


Das obige Script gibt folgendes aus:
./folder/subfolder/subsubfolder/90-33-22

Ich möchte gerne folgende Ausgabe erhalten:
90

Wie kann ich die Zahl zwischen dem Ordner-Namen und dem Bindestrich auslesen ?

Gruß
Angelika, die Script Anfängering
 
${i%%-*} sollte alles ab dem ersten Bindestrich entfernen.

Und das ist übrigens kein klassischer regulärer Ausdruck sondern eine eigene Syntax. So steht ? für ein Zeichen und * für kein oder beliebig viele Zeichen. Dein Ausdruck ${i%.*} bedeutet also, entferne die kürzeste Übereinstimmung vom Ende aus (${Variable%Ausdruck}) die mit einem Punkt beginnt und dem beliebig viele beliebige Zeichen folgen (.*). ${Variable%%Ausdruck} entfernt die längste Übereinstimmung.
 
Hallo Gumbo,

danke für die schnelle Antwort. Es war mir nicht klar, dass sich die Notation von Regex unterscheidet :(

Ich habe mich nur sehr stark gewundert :)


Kannst du mir bitte noch verraten, wie ich die gewünschte Zahl freistellen kann ?

Wenn das hier mein String ist,

./folder/subfolder/subsubfolder/90-33-22.jpg

dann möchte ich nur die Zahl 90 ausschneiden.

Gruß
Angelika
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück