On Wed, 24 Apr 2013, David Haller wrote:
Hallo,
Am Tue, 23 Apr 2013, Heiner Kuhlmann schrieb:
Was versteht man hier unter REGEX
man 7 regex
Welche Version (Basic oder Extended) weiß ich nicht.
*test*
Ok, sind "Extended Regular Expressions". Zum Beispiel werden mit
--exclude='\..{1,2}'
alle Dateien ausgeschlossen, die am Ende einen Punkt gefolgt von 1 oder 2 Zeichen haben (also z.B. t.c oder foo.pl, nicht aber t.cpp oder foo.pl~). Ist zwar ein sinnfreies Exclude, aber {n,m} ist eben ein ERE Feature. Siehe o.g. manpage.
Ich weiß was reguläre Ausdrücke sind (Perl). Die Komplexität von Perl wird hier wohl nicht gemeint sein. Was denn exakt.
s.o.
Die Doku von clamscan verweist auf die man-Page, die dazu nichts sagt und auf die Doku verweist.
Lustigerweise finden sich aber interessante Strings in clamscan selber, die aber nicht in der --help Ausgabe auftauchen:
==== strings /usr/bin/clamscan ==== regular expression (egrep-like) will not be scanned ====
egrep-like == ERE wie in man 7 regex beschrieben.
Hat jemand heraus, wie man z.B.
/dev ausschließt oder .config in allen Verzeichnissen.
Nachdem die Regexvariante klar ist:
clamscan -r ... --exclude-dir='^/dev' --exclude='^\.config$'
Hmm, bezogen auf .config wird das aber vermutlich nicht funktionieren, da ich den Eindruck habe, clamscan wendet den regulären Ausdruck (hier REGEX genannt) auf den kompletten Dateinamen an, also mit Pfad. Wird clamscan ohne Verzeichnisangabe aufgerufen, verwendet es offenbar den vollen absoluten Pfadnamen, ansonsten den des angegebenen Verzeichnisses (der dann absolut oder relativ sein kann). Also wenn man z.B. irgendwo im Home-Verzeichnis clamscam ohne explizite Verzeichnisangabe etwa mit der Option --exclude='h' aufruft, dürften alle Dateien ausgeschlossen sein, da das h ja schon in /home/... gefunden wird ("matcht"). Man kann natürlich das lokale Verzeichnis auch mit . angeben, dann sieht die Welt ganz anders aus und nur alle Dateien, die ein h enthalten, werden ausgeschlossen. Konkret alle Dateien namens .config in allen Verzeichnissen auszuschliessen sollte also eher mit --exclude="/\.config$" bzw. auch --exclude="/\.config$|^\.config$" klappen. Ob Letzteres wirklich nötig ist, weiss ich nicht genau, möglicherweise kann der hinzugefügte Ausdruck so gar nicht vorkommen. Den Dateiname incl. Pfad (!), den clamscan "sieht" und auf den der REGEX wohl angewandt wird, scheint der zu sein, den clamscan bei seinem Scan-Lauf auch ausgibt. Wenn man also nicht weiß, dass clamscan den REGEX nicht nur im eigentlichen Dateinamen, sondern offenbar auch im absoluten bzw. relativen zugehörigen Pfad sucht, kann es natürlich zu "überraschenden" Resultaten bei Nutzung der "--exclude" Option kommen. Ich bin aber kein "clamscan"-Profi, sondern habe aus Neugier nur einmal einige kurze Tests durchgeführt. Viele Grüße Jens