Rekursives wc -l

Post Reply
Message
Author
Kurt

Rekursives wc -l

#1 Post by Kurt »

Hi!

Ich habe einen Ordner mit diversen Unterordnern, in denen sich verschieden HTML-Dateien befinden. Wie kann ich die Zeilenanzahl aller HTML-Dateien im Ordner am einfachsten berechnen?

Gruss,
Kurt

Andreas Sons

Re: Rekursives wc -l

#2 Post by Andreas Sons »

wc -l `find . -type f -name "*.html" -print`

Wenn "wc" keine "total"-Zeile hat wird es etwas komplizierter:

(echo 0;wc -l `find . -type f -name "*.html" -print`|awk '{print $1 " +"}'; echo p) | dc

Vorsicht: wenn es doch eine "total"-Zeile haben sollte, so wird das Ergebnis hier doppelt so gross sein wie es sein sollte.

Und ja, es geht bestimmt auch einfacher, vor allem mit Perl oder wenn ich jetzt noch mal die man-Page von awk(1) gelesen haette, aber zumindest bei mir tut es wie es soll.

Jochen

Re: Rekursives wc -l

#3 Post by Jochen »

Beim Aufruf oben platzt aber die Kommandozeile, wenn es sich um einige tausend HTML-Dateien handelt. Besser wäre ein
<pre>find . -name "*.html" -print0 | xargs -0 wc -l</pre>Und wenn man schon die Liste erhält, kann man mit einem einfachen awk-Skript die Summe berechnen, ohne auf bc/dc zurückgreifen zu müssen:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">find . -name "*.html" -print0 | xargs -0 wc -l | \<!--no-->
awk '
{ sum += $1 ; print}
END {
print "
Total:",sum
}'</font><hr></pre></blockquote>

Jochen

Post Reply