Ich versuche, ein Skript einzurichten, das eine Reihe von Verzeichnissen durchläuft, und mache eine Sache, wenn es JPG-Dateien findet, und eine andere, wenn es .nef-Dateien findet. Das Problem ist, wenn ein Verzeichnis beispielsweise keine JPG-Dateien (oder .nef) enthält, ist der Glob-Eintrag kein erweiterter Glob mehr, sondern nur noch eine Zeichenfolge. Zum Beispiel:
my_dir="pictures/"
ext="JPG"
for f in "$my_dir"*."$ext"; do
echo $f
done
Wenn der Ordner my_dir JPG-Dateien enthält, werden diese in der Befehlszeile korrekt wiedergegeben.
pictures/one.JPG
pictures/two.JPG
Wenn my_dir jedoch keine JPG-Dateien hat, wird die Schleife für eine Iteration und ein Echo eingegeben:
pictures/*.JPG
Wie konstruiere ich das so, dass wenn der Glob keine Übereinstimmungen hat, er nicht in die for-Schleife eintritt?