Hallo Liste, ich möchte ein Script basteln das mir eine Datei sucht, welche unter einem bestimmten Verzeichniss abgelegt wurde und diese entpackt. Das entpacken macht mir keine Sorgen aber ich hab vom scripten null Plan und weiss nicht wo ich da weitermachen soll folgendes hab ich soweit hinbekommen. die Datei heist zb 0716testfile0815.tgz Den Parameter für das Datum kriege ich raus und entpacken geht freilich auch aber der Zwischenschritt mit, finde das file 0716testfile0815.tgz schau auf 0716 (datum) übersehe den rest und übergebe es zum entpacken ???? ich kriegs nicht hin. Sinn ist automatisch ein File welches so aussieht "0716testfile0815.tgz" nach dem Datum zu identifizieren und diese Aktuelle File zu entpacken. Das ganze tut per cronjob. #! /bin/sh date datum=`date '+%m%d'` #ab hier fehlt mir etwas !! wie finde ich ein file welche in diesem Ordner liegt mit dem format monat, tag zb 0716testfile0815.tgz und wie übergebe ich dies wieder ?? tar -xzf $datum$FNAME*.tgz Hilfe oder Tipps währen nett. Danke
Uwe Grosskinsky wrote:
Hallo Liste,
ich möchte ein Script basteln das mir eine Datei sucht, welche unter einem bestimmten Verzeichniss abgelegt wurde und diese entpackt.
Das entpacken macht mir keine Sorgen aber ich hab vom scripten null Plan und weiss nicht wo ich da weitermachen soll folgendes hab ich soweit hinbekommen. die Datei heist zb 0716testfile0815.tgz
Den Parameter für das Datum kriege ich raus und entpacken geht freilich auch aber der Zwischenschritt mit, finde das file 0716testfile0815.tgz schau auf 0716 (datum) übersehe den rest und übergebe es zum entpacken ???? ich kriegs nicht hin.
Sinn ist automatisch ein File welches so aussieht "0716testfile0815.tgz" nach dem Datum zu identifizieren und diese Aktuelle File zu entpacken. Das ganze tut per cronjob.
#! /bin/sh date datum=`date '+%m%d'`
#ab hier fehlt mir etwas !! wie finde ich ein file welche in diesem Ordner liegt mit dem format monat, tag zb 0716testfile0815.tgz und wie übergebe ich dies wieder ??
tar -xzf $datum$FNAME*.tgz
So ganz habe ich dein Problem nicht verstanden, aber vielleicht hilft das hier ja schon: datum=`date '+%G%m'` verzeichnis='/var/log' datei=mail-${datum} datei=${datei}\*\.gz for finddatei in `find $verzeichnis -name $datei`; do echo $finddatei done Ich habe das ganze mal für Logdateien in /var/log gemacht. Anstelle des Echo-Befehls kannst du ja dein Entpacken reinsetzen Sandy -- Antworten bitte nur in die Mailingliste! PMs bitte an: news-reply (@) japantest (.) homelinux (.) com
Hallo Sandy, also :) nach ein wenig Umstellungsarbeit machts genau das was ich da ewig gesucht und erfolglos probiert hab. mein (dein) Ergebniss schaut nun so aus Datei ist angekommen per ftp, ich kann nun nach der Datei suchen und diese entpacken. Die Datei heist für heute "0720_0500_testbckp.tgz" #! /bin/sh datum=`date '+%m%d'` verzeichnis='/home/test/test' datei=${datum}_0500_testbckp datei=${datei}\.tgz for finddatei in `find $verzeichnis -name $datei`; do tar -xzf $finddatei done File wurde gefunden und entpackt. in der Zeile mit "for finddatei in `find $verzeichnis -name $datei`; do" war für mich nur folgendes Prob das im Posting ein Zeilenumbruch war ... und ich es genauso übernommen habe *g*. es hat ein wenig gedauert ....habs aber bemerkt als ich das ganze von hand in die konsole eingegeben habe. Nun tut es aber 1A Ich hätte da nur noch eine Frage ? So wie das in den folgenden 2 Zeilen aussieht!! datei=${datum}_0500_testbckp datei=${datei}\.tgz kann mir jemand erklähren wie sich das verträgt ? Es sieht für mich so aus das "datei=" eigentlich von der 2ten Zeile "datei=${datei}\.tgz" überschrieben wird. Da ich aber sehe das dies passiert was ich mir wünsche darf ich annehmen das beide Zeilen sich aneinanderketten und einen neuen "Ausdruck" (wenn ich es mal so nennen darf) "datei=" bilden Was passiert da im Hintergrund ? kann ich theoretisch den "Ausdruck" "datei=" soweit ausbauen wie man möchte ? Wenn ich nur mehr Zeit hätte mit BASH was zu machen währe mir schon viel geholfen !! Danke recht herzlichst Am Dienstag, 19. Juli 2005 19:18 schrieb Sandy Drobic:
Uwe Grosskinsky wrote:
Hallo Liste,
ich möchte ein Script basteln das mir eine Datei sucht, welche unter einem bestimmten Verzeichniss abgelegt wurde und diese entpackt.
Das entpacken macht mir keine Sorgen aber ich hab vom scripten null Plan und weiss nicht wo ich da weitermachen soll folgendes hab ich soweit hinbekommen. die Datei heist zb 0716testfile0815.tgz
Den Parameter für das Datum kriege ich raus und entpacken geht freilich auch aber der Zwischenschritt mit, finde das file 0716testfile0815.tgz schau auf 0716 (datum) übersehe den rest und übergebe es zum entpacken ???? ich kriegs nicht hin.
Sinn ist automatisch ein File welches so aussieht "0716testfile0815.tgz" nach dem Datum zu identifizieren und diese Aktuelle File zu entpacken. Das ganze tut per cronjob.
#! /bin/sh date datum=`date '+%m%d'`
#ab hier fehlt mir etwas !! wie finde ich ein file welche in diesem Ordner liegt mit dem format monat, tag zb 0716testfile0815.tgz und wie übergebe ich dies wieder ??
tar -xzf $datum$FNAME*.tgz
So ganz habe ich dein Problem nicht verstanden, aber vielleicht hilft das hier ja schon:
datum=`date '+%G%m'` verzeichnis='/var/log' datei=mail-${datum} datei=${datei}\*\.gz for finddatei in `find $verzeichnis -name $datei`; do echo $finddatei done
Ich habe das ganze mal für Logdateien in /var/log gemacht. Anstelle des Echo-Befehls kannst du ja dein Entpacken reinsetzen
Sandy
-- Antworten bitte nur in die Mailingliste! PMs bitte an: news-reply (@) japantest (.) homelinux (.) com
Am Mittwoch, 20. Juli 2005 09:20 schrieb Uwe Grosskinsky:
Ich hätte da nur noch eine Frage ? So wie das in den folgenden 2 Zeilen aussieht!! datei=${datum}_0500_testbckp datei=${datei}\.tgz kann mir jemand erklähren wie sich das verträgt ? Es sieht für mich so aus das "datei=" eigentlich von der 2ten Zeile "datei=${datei}\.tgz" überschrieben wird.
mit ${datei} wird auf die Variable zugegriffen, d.h. Du kannst Dir das so vorstellen, das dieser Ausdruck durch den aktuellen Wert der Variablen ersetzt wird. Gruß Andreas
Hallo Andreas, also die erste Zeile wird dann von der 2ten ersetz.....sprich die in der ersten Variable welche angelegt wurde wird demnach von der 2ten überschrieben. Wenn ich dich richtig verstanden habe!! Nur!! stelle ich mir dann die Frage wie er dann über tar -xvf $finddatei denn tatsächlichen Namen der "datei=" finden kann ? Das muss doch mit den geschweiften Klammern zusammenhängen das er bevor die erste Variable "datei=${datum}_0500_testbckp" mit der 2ten überschrieben wird durch datei=${datei}\.tgz überschreibt und duch den Aufruf datei=${datei} die erste Zeile einliest und den Anhang \.tgz ranbaut und somit die Variable datei= dann neu reinschreibt welche sich nun endlich zusammensetzt aus Datum; Statischer teil des Dateinamens und der Endung! Wenn das so ist (das Ergebniss sprich ja für sich selbst) dann hab ich das so vom Ablauf verstanden. um solch eine Variable aufzubauen muss ich also dies Variable datei= Step by Step zusammenbauen um das gewünscht Ergebniss zurückzubekommen. Letzte Frage zu dem Thema ..... was genau machen die geschweiften klammern ? Ansonsten ... üben üben und nochmal üben u. ausprobieren Danke Am Mittwoch, 20. Juli 2005 09:58 schrieb Andreas Loesch:
Am Mittwoch, 20. Juli 2005 09:20 schrieb Uwe Grosskinsky:
Ich hätte da nur noch eine Frage ? So wie das in den folgenden 2 Zeilen aussieht!! datei=${datum}_0500_testbckp datei=${datei}\.tgz kann mir jemand erklähren wie sich das verträgt ? Es sieht für mich so aus das "datei=" eigentlich von der 2ten Zeile "datei=${datei}\.tgz" überschrieben wird.
mit ${datei} wird auf die Variable zugegriffen, d.h. Du kannst Dir das so vorstellen, das dieser Ausdruck durch den aktuellen Wert der Variablen ersetzt wird.
Gruß Andreas
Uwe Grosskinsky wrote:
also :) nach ein wenig Umstellungsarbeit machts genau das was ich da ewig gesucht und erfolglos probiert hab.
Prima. (^-^)
Die Datei heist für heute "0720_0500_testbckp.tgz"
#! /bin/sh datum=`date '+%m%d'` verzeichnis='/home/test/test' datei=${datum}_0500_testbckp datei=${datei}\.tgz for finddatei in `find $verzeichnis -name $datei`; do tar -xzf $finddatei done
File wurde gefunden und entpackt.
Wenn du immer genau eine Datei hast, dann brauchst du keine Schleife. Ich hatte sie nur für den Fall der Fälle eingebaut. #! /bin/sh datum=`date '+%m%d'` verzeichnis='/home/test/test' datei=${datum}_0500_testbckp tar -xzf ${verzeichnis}/${datei}\.tgz Mit etwas Gemeinheit könnte man das auch zu einem wunderbar chaotischen Einzeiler zusammenfassen, aber lassen wir das lieber im Interesse der Wartbarkeit des Scriptes. (^-^)
Ich hätte da nur noch eine Frage ? So wie das in den folgenden 2 Zeilen aussieht!! datei=${datum}_0500_testbckp datei=${datei}\.tgz kann mir jemand erklähren wie sich das verträgt ?
Es wird dort einer Variablen namens "datei" ein Wert auf der rechten Seite zugewiesen. In der zweiten Zeile wird der Variablen "datei" wieder ein Wert zugewiesen. Es funktioniert nur, weil die rechte Seite zuerst ausgewertet wird, und dort wird als erstes der ursprüngliche Wert von "datei" abgefragt und erweitert. Sandy -- Antworten bitte nur in die Mailingliste! PMs bitte an: news-reply (@) japantest (.) homelinux (.) com
Hallo, eigentlich hast Du schon alles, was Du für Dein Script brauchst - musst dem tar-Befehl nur noch den kompletten Pfad zur Datei angeben - und eventuell noch ein Zielverzeichnis, wo der entpackte Inhalt hinsoll. Grüße, Felix
participants (4)
-
Andreas Loesch
-
Felix Nawroth
-
Sandy Drobic
-
Uwe Grosskinsky