Hallo Jürgen, hallo Bernd, hallo Leute, Am Mittwoch, 16. Januar 2002 08:22 schrieb Juergen Schwarting:
* Am 15.01.2002 um 23:56 Uhr schrieb Christian Boltz:
Hier also der Zwischenstand: $ diff -r -q verz_a/ verz_b/ Files verz_a/changedfile and verz_b/changedfile differ Only in verz_a/: new_in_a Only in verz_b/: new_in_b
Für das Schreiben des Scripts bin ich jetzt aber zu müde ;-)
heute schon wieder zu müde ;-) Naja, wofür gibt es ein Wochenende?
Grundgedanke ist der folgende: diff-Ausgabe in eine Datei umleiten [1], diese mit while und read $1 $2 $3 $4 $5 zeilenweise einlesen, dann - falls $1 = "Files" -> Datei geändert -> $2 [2] ins Changed-Verzeichnis - falls $1 = "Only" und $3 = "verz_a" -> neue Datei -> $4 ins Changed-Verz. - falls $1 = "Only" und $3 = "verz_b" -> gelöschte Datei -> Hinweis ausgeben
[1] sollte auch mit einer Pipe gehen, oder? [2] "verz_a/" muss ich natürlich aus $2 herauslöschen lassen. TEST=`echo "verz_a" | cut -c 7-` sollte das erledigen.
zu [1]
diff -r -q verz_a/ verz_b/ | while read Zeile; do set -- $Zeile echo "$1 # $2 # $3 # $4 # $5" # nur als Beispiel
Die letzten 2 Zeilen habe ich zwar noch nicht ganz verstanden, aber sie scheinen zu funktionieren ;-) Jetzt muss ich nur noch (per if oder case) die Ausgabe von diff auswerten.
done
zu [2]
Zeile="verz_a/bla/blub.txt" # zu zerlegende Zeile
echo ${Zeile:7} # schreibt alles ab der 8 Stelle # 0-7 wird übersprungen bzw.
echo ${Zeile#verz_a/} # entfernt 'verz_a/' aus der Zeile
hiermit spart man sich den Aufruf des externen <cut> ;-)
netter Trick ;-) Danke für die Tips! So langsam wird es wohl Zeit für einen Ausdruck der man bash... Gruß Christian Boltz -- Registrierter Linux-Nutzer #239431 Linux - life is too short for reboots.