Die erste Lösung die einem einfällt ist recht trivial:
ls /etc/apache2/ | wc -l
Dies liefert uns die Anzahl der Dateien in dem Verzeichnis. Aber leider nicht nur die Dateien! Auch die Unterverzeichnisse und Symlinks werden als eine Datei mit gezählt. Und was ist mit den Unterverzeichnissen? Evtl. wollen wir die Zahl dort auch gleich mit drin haben?
Dateien zählen
Fangen wir einfach an:
Alle Dateien eines Verzeichnisses inkl. Unterverzeichnisse aber ohne Symlinks:
find /etc/apache2/ -type f | wc -l
Zur Übung: Wie müsste es aussehen, wenn ich die Anzahl der Unterverzeichnisse ermitteln möchte?
find /etc/apache2/ -type d | wc -l
Jetzt wollen wir aber doch keine Dateien in Unterverzeichnisse mitzählen:
find /etc/apache2/ -maxdepth 1 -type f | wc -l
(Achtung: die Position von -maxdepth
ist bei find
entscheidend wichtig!)
Damit können wir jetzt beliebig unsere Verzeichnisse abklappern und evtl. Speicherfresser finden oder Statistiken führen.
Beispiel aus der Praxis:
Ein Kunde wollte mod_evasive installiert haben. Um die Wirkungsweise zu kontrollieren habe ich ihm ein kleines cron
-Script geschrieben, welches die Anzahl der erkannten Angriffe aus /tmp/dos-*/
ausgewertet hat.