• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] Ordnerinhalt überprüfen

Escho

Advanced Hacker
Ich möchte überprüfen, ob in einem bestimmten Ordner Dateien mit der Endung .CR2 existieren. Wenn ja, dann soll das Script weitermachen, falls nein, soll eine Fehlermeldung erscheinen.

Irgendwie steh ich heute auf dem Schlauch. Wenn ich das mit test überprüfen will, kommt immer nur die Meldung: zu viele Argumente. Mit was mach ich es dann?

Hier der nicht funktionierende Auszug aus dem Script:

Code:
#!/bin/bash

if [ ! -e ~/Bilder/Aktuell/8_01_a/CR2/*.CR2 ]
then
      echo "verzeichnis_stimmt_nicht"
fi

exit

Edgar
 
A

Anonymous

Gast
Escho schrieb:
Wenn ich das mit test überprüfen will, kommt immer nur die Meldung: zu viele Argumente. Mit was mach ich es dann?

zu viele Argumente ist doch klar, test nimmt nur ein Argument zum testen, weitere könntest du mit "UND" oder "ODER" mit weiteren Tests logisch verknüpfen.

Bei dir soll "test -e Datei*" auswerten. Die Bash macht aus Datei* allerdings eine ganze Reihe von Dateinamen, je nachdem wie viele solcher Dateien im Verzeichnis sind. Klar das da test rummeckert.

mach einfach ein "ls * | grep irgendwas &>/dev/null " und teste dann den Rückgabewert von grep oder irgend so was in der Art, das funktioniert schon ehr.

robi
 
Hallo robi,
robi schrieb:
mach einfach ein "ls * | grep irgendwas &>/dev/null " und teste dann den Rückgabewert von grep oder irgend so was in der Art, das funktioniert schon ehr.

Etwa sowas in der Art?
Code:
#!/bin/bash

if ls ~/Bilder/Aktuell/8_01_a/|grep *.CR2|wc -l
=<1
then
      echo "verzeichnis_stimmt_nicht"
fi

exit
Wobei ich mit dem Teil in Zeile 4 nicht sicher bin wie das geschrieben werden sollte.

lieben Gruß aus Hessen
 
OP
Escho

Escho

Advanced Hacker
Hallo zusammen

Danke für die Hinweise. Robi, dein Tip mit ls und grep war genau das, was ich gesucht habe. Hier das kleine Script, das nun so funktioniert, wie ich es mir vorstelle:

Code:
#!/bin/bash
#Extrahieren von Thumbnails (jpeg-Vorschaubilder) aus Raw-Bildern (CR2) und speichern derselben in einen definierten Ordner

# ----------------------------------Funktionen-------------------------------------

# °°°° Abbruch °°°°
benutzerabbruch ()
{
kdialog --msgbox "Abbruch durch den Benutzer"
exit
}

verzeichnis_stimmt_nicht ()
{
kdialog --msgbox "Kein Unterverzeichnis CR2 mit Raw-Dateien vorhanden"
exit
}

# ------------------------------Hauptprogramm--------------------------------------

# °°° Verzeichnis mit Fotos auswählen °°°
quellverzeichnis=`kdialog --getexistingdirectory "~/Bilder/Aktuell"`
if [ $? != 0 ]
then
      benutzerabbruch
fi

# °°° Gibt es ein Unterverzeichnis CR2, in dem Raw-Daten enthalten sind? °°°
ls "$quellverzeichnis"/CR2 | grep .CR2 &>/dev/null
if [ $? != 0 ]
then
      verzeichnis_stimmt_nicht
fi

# °°° Zielverzeichnis für die extrahierten Thumbnails anlegen °°°
mkdir "$quellverzeichnis"/thumb

# °°° Extrahieren der Thumbnails °°°
dcraw -e "$quellverzeichnis"/CR2/*.CR2

# °°° Verschieben der extrahierten Jpegs ihr eigenes Unterverzeichnis °°°
mv "$quellverzeichnis"/CR2/*.thumb.jpg "$quellverzeichnis"/thumb

# °°° Programmende °°°
exit

Edgar
 
Oben