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

Nach bestimmten Dateien suchen und ein Programmaufruf machen

Hallo,

Ich möchte gerne ein Shell-Script machen welches:

Ein Verzeichniss nach *.wb1 Dateien durchsucht und wenn eine gefunden wurde ein Programmaufruf startet in dieser Form: programm datei.wb1 dateiX.jpg.
(Das Programm welches aufgerufen werden sollte braucht eine input.wb1 und output.jpg Datei)

X soll dabei eine Variable sein welche bei jedem Programmaufruf inkrementiert wird.

Kann ich das in einem Shell-Script realisieren?
Mit find müsste doch das gehen, ich habs aber irgendwie nicht zum laufen gebracht!

Für Hilfe danke ich im vorraus!

gruss
rmc
 
A

Anonymous

Gast
Code:
typeset -i X
X=0
find SUCHVERZEICHNISS -name "*.wb1" | while read DATEINAME
do
  programm $DATEINAME $DATEINAME$X.jpg
  X=X+1
done


robi
 
A

Anonymous

Gast
nimm aber doch lieber statt " find Verzeichniss -name *.usw "
"ls Verzeichniss/*.usw" , find geht auch in eventuell vorhandene Unterverzeichnisse, und das kann ungewollt sein. sonst funktionierts genauso.

robi
 
robi schrieb:
nimm aber doch lieber statt " find Verzeichniss -name *.usw "
"ls Verzeichniss/*.usw" , find geht auch in eventuell vorhandene Unterverzeichnisse, und das kann ungewollt sein. sonst funktionierts genauso.

robi

Hi,

Nein, das find ist schon okay, ich möchte dass er die Unterverzeichnisse miteinbezieht.
Jetzt hätte ich aber noch eine Frage. Es funktioniert zwar alles gut, aber wenn ich das Script ausführe in einem Verzeichniss mit Unterverzeichnissen und vielen Dateien macht er nach 38 Dateien nicht mehr weiter. Das Script hält einfach, es kommt auch nicht der Prompt, sonder einfach eine leere Zeile. Ich muss dann jeweils mit ctrl+c abbrechen, ansonsten geschiet nichts mehr.
An was könnte das liegen? Ich denke nicht dass es am Programm welches ich ausführe liegt, das wird ja immer wieder neu ausgeführt.
Kann es sein dass die Variable nicht höher gehen kann oder so?

Danke für die Hilfe!
grüsse
rmc

Edit: Ich habe jetzt das Script jetzt mal ins gleiche Verzeichniss gelegt wie die Dateien gelegt und dort ausgeführt. Dort gings Problemlos über 100 Dateien hinweg... Also scheint das Problem bei der finde - funktion zu sein?
 
A

Anonymous

Gast
ersetze einfach mal dein Progamm durch echo und lasse beide Dateinamen ausgeben also echo "$Eingabedatei Ausgabedatei$X.jpg" oder setze die echo Zeile einfach vor die Programmzeile und untersuche mal die Ausgabe der Path und Dateinamen. Kann mir vorstellen solche Probleme könnte man ua. bekommen wenn man zB Leerzeichen oder andere Sonderzeichen (oftmals aus Windows eingeschleppt) in irgend einem Dateinamen irgendwo im Dateibaum hat. Sonst fällt mir da auch nichts schlaues dazu ein.

robi
 
Hi,

Wenn ich ein echo vor der Programmzeile mache ist die Ausgabe korrekt.
Also funktioniert eigentlich das Script.

Vielleicht liegt es effektiv am Programm dass die vielen Aufrufe nicht verarbeiten kann.

Gibt es eine möglichkeit das Script 1 Sekunde warten zu lassen, eine Wait funktion? Vielleicht würde es dann ja funktionieren.

Gruss
rmc

Edit: Hab due funktion gefunden -> sleep
Hat aber trotzdem nicht funktioniert. Habe dann herausgefunden dass das Programm einfach mühe mit der Datei wo er stehen bleibt hat...
 
Oben