Verzeichnisse vergleichen mittels Skript
Geizhals » Forum » Linux-Support » Verzeichnisse vergleichen mittels Skript (14 Beiträge, 266 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
Verzeichnisse vergleichen mittels Skript
20.03.2006, 09:54:14
Tja, das dürfte für viele hier eine Leichtigkeit sein, aber ich komme nicht dahinter. Wie kann ich mittels eines shell-Skripts die Inhalte zweier Verzeichnisse vergleichen und gleiche Dateien in einem Log-File speichern?
Ich schaffe es nicht, den Dateinamen in einer Variablen im Skript zu speichern, damit ich diese dann vergleichen kann.

Falls es jemanden interessiert, ist hier das Listing, soweit ich es bis jetzt habe:

#!/bin/bash

PATH=/bin:/usr/bin

FIRSTPATH="/home/user/Documents/Sicherung/ /home/user/Documents/Sicherung/ebooks/"
SECONDPATH="/Sicherung/"
LOGFILE="/home/user/Documents/Vergleich-Log"
count=1

echo -n "Removing old log files..."
if [ ! -e "$LOGFILE" ]
then
echo "No logfile present. Deleting old files skipped."
else
rm $LOGFILE 2> /dev/null
if [ ! -e "$LOGFILE" ]
then
echo "Deletion complete."
else
echo "Error while deleting old logfiles."
echo "Continue to compare anyway."
fi
fi

for path in $FIRSTPATH
do
for path1 in $SECONDPATH
do
     echo "File comparison on $FILE and $FILE1" >> $LOGFILE
FILE=$path
FILE1=$path1
if [ "$FILE" == "$FILE1" ]
then
echo FILE1 >> $LOGFILE
fi
     done
done

echo
echo "System comparison complete, status: $?"

exit
-----------------------------------------------------------
Das mit den Riesentitten heutzutage kann ich mir ja überhaupt nicht erklären. Wenn ich mich an meine Schulzeit erinnere oder alte Klassenfotos anschaue, gabs da keine 13 jährigen mit so einer Oberweite.
(phj über das Thema "Zu erotische Kleidung an Österreichs Schulen")


Antworten PM Übersicht Chronologisch
 
Melden nicht möglich
........
Re(8): Verzeichnisse vergleichen mittels Skript
26.03.2006, 14:18:21
Nun ja...

Ich bin bisher über noch keine Script-Aufgabe gestoßen, die mit Shell besser/schneller/einfacher zu lösen wäre als mit Perl... Nun ja, doch:

Wenn du ein Shellscript hast, das genauso aussieht wie eine DOS-Batchdatei (also ein i.d.R. lineares Script ohne Verzweigung) - dann nehme ich heute noch SHELL.

IMHO ist die Shell aber "saugshissn" auch schon für Standardaufgaben - wie zB dem sprachunabhängig empfohlenen Anlegen von temporären Dateien auf Unixoiden.

Arrays braucht man sehr oft - die finde ich in der Shell elend. Assoziative Arrays machen auch sehr oft sinn - die vermisse ich total. Es mag /natürlich/ auch von der verwendeten Shell abhängen - ich habe da nur bei ksh und bash viele Erfahrungen - wobei die Frage bleibt, was man denn stattdessen nehmen sollte. Diese beiden sind am öftesten verwendet, also am ehesten gecacht und COW beim Durchlauf.

Das "saubere" einlesen von Dateien ohne auf cat auszuweichen zB finde ich in der bash... häßlich (aber ich stimme 100%ig zu, daß das ausschließlich subjektiver Geschmack ist). Aber ein $(< filename ) empfinde ich als seltsam - drum wohl wenig verwendet.

Andere Konzepte finde ich bei der Bash net weit genug durchdacht...
so finde ich zB die Ausgabeumleitung auf einen Host via
> /dev/tcp/zielhost/zielport
sehr gut - allerdings finde ich es unverständlich, daß man nicht genauso ein Listen implementiert hat, also ein < /dev/tcp/localhost/5555

Auch daß man für jede Primitivaufgabe extra ein implizites fork/exec machen muß finde ich ungut... Abschließen finde ich die Variablenbehandlung in read-Schleifen als echt schlimm (zumindest in der bash).

Die ksh ist da überlegen - sowie bietet sie Coprozesse, die ja noch immer in der bash fehlen - allerdings IMHO sonst eher matt...

Nun ja, wie gesagt - für einfache Befehlsabfolgen sind shellscripts echt nett - dazu ist eine Shell dann aber doch wieder zu bloated.

Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung