Hi! Michelle Konzack wrote:
Am 2005-08-04 16:46:50, schrieb Christoph Bersch:wie kann ich die größte Schnittmenge von mehreren Dateien ermitteln?Konkret geht es darum in einem Netzwerk zu ermitteln, welche Pakete auf _jedem_ Rechner installiert sind.Wenn Du eine Dateiliste von jedem Server hast, kannste folgendes machen: grep -f server1.list server2.list >gleiche1.list grep -f server3.list gleiche1.list >gleiche2.list grep -f server4.list gleiche2.list >gleiche3.list grep -f server5.list gleiche3.list >gleiche4.list grep -f server6.list gleiche4.list >gleiche5.list Was dann in gleiche5.list übrig bleibt, ist auf allen Servern vorhanden
Habe es jetzt mit folgendem Skript gemacht: #!/bin/sh PACKAGEDIR=pap_packages TMPFILE=$PACKAGEDIR/pap_packages.tmp TMPFILE2=$PACKAGEDIR/pap_packages.tmp2 COMMONPACKFILE=$PACKAGEDIR/pap_packages.install # temporäre Datei löschen cat /dev/null > $TMPFILE for file in $PACKAGEDIR/pap*_packages.install do # # Wenn die temporäre Datei noch leer ist, den gesamten # Inhalt der ersten Datei reinschreiben if [ ! -s $TMPFILE ]; then cat $file > $TMPFILE # # Andernfalls Inhalte vergleichen else grep -x -f $TMPFILE $file > $TMPFILE2 cat $TMPFILE2 > $TMPFILE fi done cat $TMPFILE > $COMMONPACKFILE rm $TMPFILE $TMPFILE2 #####################################################Wenn jemand noch Verbesserungsvorschläge für das Skript hat (keine 2 temporäre Dateien, etc) immer her damit!
Danke und Grüße Christoph