Rowcounter

root 18.06.09 09:17

Bash-komentotulkille toteutettu rivilaskuri. Tein skriptan alunperin itseäni varten, koska olin kiinnostunut massiivisen kokoisen projektin sisältämistä rivimääristä.

 Tekstiversio  Arvo: 3 (3 ääntä)  Äänestä: +  -
#!/bin/bash

# Rowcounter v0.1
# Laskee tiedostoista rivien lukumäärän määritetyn polun (ja alihakemistojen) takaa,
# erittelee tulokset tiedostopäätteiden mukaan ja näyttää yhteenlasketun lopputuloksen.
# Tiedostoissa sijaitsevia mahdollisia kommentteja ei oteta huomioon.
# by Teemu Ikonen 6/2009 - http://iconen.org

# Polku, minkä takaa etsitään
path="/var/www"

# Tiedostopäätteet, joita etsitään
ptrn=(html htm css php inc js)

echo "Rowcounter v0.1"
echo "by Teemu Ikonen"
echo
echo "* Path: $path"

# Tyhjennetään kokonaislkm
unset total

# Käydään jokainen pääte läpi
for suffix in ${ptrn[*]}; do
        echo -n "** Rows in files with suffix .$suffix: "

        # Tiedostot läpi ja lisätään ne temp-muuttujaan
        for file in `find $path -name "*.$suffix" -print`; do
                temp="$temp $file"
        done

        if [ -z "$temp" ]; then
                echo "N/A (no files)"
        else
                # Lasketaan rivien lkm
                rows=`cat $temp | wc -l`

                # Lisätään se kokonaismäärään
                let "total = $total + $rows"

                # Tulostetaan päätekohtainen lkm
                echo $rows
        fi

        # Tyhjennetään muuttujat
        unset temp rows

done

# Tulostetaan kokonaismäärä
echo "* Total rows: $total"

editoitu: 10:37 3.8.09
root 10:37 3.8.09 
skoskine 19:09 15.9.09 
Lisää alkuun 'unset total', niin voi käyttää useasti.
Miten tuo jättää kommentit huomiotta?
skoskine 21:44 15.9.09 
Niin se laskee kaikki rivit. Kokeilin miten sais
tyhjät rivit pois: grep '\w'