find weiterverarbeiten

juan_

juan_

König
Ola zusammen :)
hoffe euch gehts gut?!


ich habe hier ein kleines Gedankenproblem ..
undzwar will ich alle Files eines bestimmten Dateityps (zB mal txt-Files) verarbeiten:
find . -name *.txt

Nun bekomme ich zB so eine Ausgabe:
\pfad\zum\file\1234.txt (Filename beliebig)

Ich brauche jetzt zum einen den Pfad und den Dateinamen in einer separaten Variable und muss danach ein anderes Programm aufrufen.

geht das immer noch mit find (-exec) oder lieber per for-Schleife?
Scheint mir nicht allzu komplex, aber ich kriegs dennoch nicht hin ;(

Kann mir jemand helfen?

Danke!
 
Hallo,

Code:
find . -name *.txt -exec mein_script.sh '{}' \;
[CODE]

mein_script.sh
[CODE]
verzeichnis=`dirname $1`
datei=`basename $1`

noch_ein_script.sh
# oder was auch immer
Keine Ahnung ob mehrere execs am Stück gehen, damit steh ich immer wieder auf Kriegsfuß ;)

mfg
HeadCrash
 
Hi,
Danke soweit für dein Post.
Das Programm, was ich aber aufrufe, ist kein Shellscript, sodass ich dort die Variablen definieren kann. Sie sollten schon im Find-Statement erzeugt werden!


Danke
 
Deshalb rufen wir ja das "mein_script.sh" als Wrapper auf. Machen aus dem Dateipfad und Namen Variablen und rufen dann auf, was immer wir brauchen sei das jetzt "noch_ein_script.sh" oder "grosses_boesses_program.bin".

Oder brauchst du alle Ergebnisse am Stück in deinem Program?
 
achso.
am Stück nicht.
Ich will auf jede gefundene Textdatei dieses Programm aufrufen.

Mir wäre es natürlich lieber, wenn ich ohne den Umweg eines weiteren Skripts die execs aufrufen kann.

Aber dank schonmal !
 
Hi,

wenn das Skript/Programm, das du für jede Datei ausführen willst, jeweils nur den Pfad und die Datei als Argumente erwartet, kannst du das Ganze wahrscheinlich am einfachsten mit "xargs" erledigen:
Code:
find . -name \*.txt -printf "%h %f\n" |
xargs -n 2 $process
Alternativ geht das natürlich mit einer kleinen while-Loop:
Code:
find . -name \*.txt -printf "%h %f\n" |
while read DIR FILE; do
        $process "$DIR" "$FILE" ...
done
Gruss, A.
 
danke!
hab mich für die Schleife entschieden :)

Schönen Tag allen !
 

Ähnliche Themen

find und substitutions-problem

CGI laesst sich nicht ausfuehren

Zurück
Oben