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
--
Haeufig gestellte Fragen und Antworten (FAQ):
http://www.de.debian.org/debian-user-german-FAQ/
Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)