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
Rekursives wc -l
Re: Rekursives wc -l
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.
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.
Re: Rekursives wc -l
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
<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