Mailinglist Archive: opensuse-de (6694 mails)

< Previous Next >
Re: Verzeichnisse vergleichen
  • From: Christian Boltz <christian.boltz@xxxxxxxx>
  • Date: Wed, 16 Jan 2002 23:50:47 +0100
  • Message-id: <200201162314.32398@xxxxxxxxxxxxxxx>
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.


< Previous Next >