Hilfe: Shellscript

blindOracle

Active Member
Servus Leute,

ich bräuchte bitte Hilfe bei der Umsetzung eines Scriptes, ich hab grade Denkblockade, muß an der Hitze liegen...

Ich versuche gerade eine Ansammlung aus Daten die in einer Dateistruktur bestehend aus Verzeichnissen und Unterverzeichnissen zu sortieren.

Jetzt habe ich mir überlegt dass ich diese Struktur so lange durchsuchen lasse bis ich bei der Datei also der letzten Ebene angekommen bin. Und dann müssten die einzelnen Unterverzeichnisse in Variablen landen zur endgültigen Verwurstung, sollte dann so aussehen:

/vz0/uvz0/uuvz0/datei0
/vz0/uvz0/uuvz0/datei1
/vz0/uvz0/uuvz1/datei0
/vz0/uvz0/uuvz1/datei1
/vz0/uvz1/uuvz0/datei0
/vz0/uvz1/uuvz1/datei0

usw...

Und das hab ich dann augeteilt in die Variablen:

$vz0-n
$uvz0-n
$uuvz0-n
$file0-n

Könnte mir da jemand bei helfen, bzw. ein gutes Bash-Tutorial empfehlen?

Im Prinzip muss ich den kompletten Pfad bis ich bei der Datei ankomme irgendwie automatisch suchen lassen und dann ein Kommando auf diese Datei absetzen, das Ganz rekursiv bis der komplette Pfad mit allen Verzeichnissen und Unterverzeichnissen durch ist.


Herzlichen Dank im Voraus!!

Blindy <= Noch lernender Scripter ;-)
 
Schreib' lieber was du eigentlich erreichen willst und mach ein Beispiel Eingabedaten -> Ausgabedaten.

Wahrscheinlich ist das ein Einzeiler.
 
Schreib' lieber was du eigentlich erreichen willst und mach ein Beispiel Eingabedaten -> Ausgabedaten.

Wahrscheinlich ist das ein Einzeiler.

Servus,

ich will erreichen dass für Logfiles die in einem ewig verschachtelten Dateisystem liegen eine webalizer-Auswertung gefahren wird.

Pfad könnte so aussehen wie zu Anfang beschrieben. Das Webalizer-Kommando hab ich schon, jetzt müsste ich eben nur rekursiv da durchgehen, bis ein Logfile gefunden wird, dieses durch webalizer lassen und ein Ausgabe-VZ angeben. Wäre noch fein wenn man die einzelnen Verzeichnisse in Variablen hätte um eben den Ausgabepfad zu spezifizieren.

Danke!
 
Wenn in der Verzeichnisstruktur keine anderen Dateien als die logfiles vorkommen, oder wenn die logfiles eine bestimmte markante Endung haben, dürfte es mit "find" wirklich ein einzeiler werden:
Die Syntax von find, die du dafür brauchst, ist wie folgt:

find [VERZ] [-name PATTERN] [-type X] [-exec BEFEHL]

VERZ ist das Startverzeichnis, in dem du (rekursiv) suchen willst. Für PATTERN kannst du ein suchmuster eingeben, falls zum beispiel alle dateien die endung "log" haben: *log.
Der Dateityp wird für X eingesetzt. f ist file und d ist directory. Am Schluss trägst du noch den BEFEHL ein, der auf jede Datei ausgeführt werden soll. In der Bash kommt ans ende des Befehls immer ein \;
 
Wie Thom schreibt, das ist kein Skript wert sondern ein einziger Befehl. find(1) ist dein Freund.
 
Zurück
Oben