Ile linii jest w każdym pliku.
Zastosowanie wc
, pierwotnie dla liczby słów, wierzę, ale może to zrobić linie, słowa, znaki, bajtów, a długość najdłuższej linii. Ta -l
opcja mówi, aby liczyć linie.
wc -l <filename>
Spowoduje to wyświetlenie liczby wierszy w:
$ wc -l /dir/file.txt
32724 /dir/file.txt
Możesz także przesyłać dane do wc
:
$ cat /dir/file.txt | wc -l
32724
$ curl google.com --silent | wc -l
63
Ile linii jest w katalogu.
Próbować:
find . -name '*.pl' | xargs wc -l
inny jednowarstwowy:
( find ./ -name '*.pl' -print0 | xargs -0 cat ) | wc -l
BTW, wc
polecenie liczy nowe kody linii, a nie linie. Kiedy ostatni wiersz w pliku nie kończy się nowym kodem wiersza, nie będzie to liczone.
Możesz użyć grep -c ^, pełny przykład:
#this example prints line count for all found files
total=0
find /path -type f -name "*.php" | while read FILE; do
#you see use grep instead wc ! for properly counting
count=$(grep -c ^ < "$FILE")
echo "$FILE has $count lines"
let total=total+count #in bash, you can convert this for another shell
done
echo TOTAL LINES COUNTED: $total
Ile w sumie linii
Nie jestem pewien, czy zrozumiałem, że prosisz poprawnie. np. spowoduje to wyświetlenie wyników w następującym formacie, pokazującym liczbę wierszy dla każdego pliku:
# wc -l `find /path/to/directory/ -type f`
103 /dir/a.php
378 /dir/b/c.xml
132 /dir/d/e.xml
613 total
Alternatywnie, aby wyświetlić tylko całkowitą liczbę nowych znaków wiersza bez liczenia plik po pliku, może okazać się przydatne następujące polecenie:
# find /path/to/directory/ -type f -exec wc -l {} \; | awk '{total += $1} END{print total}'
613
Co najważniejsze, potrzebuję tego w „czytelnym dla człowieka formacie”, np. 12 346 678 zamiast 12345678
Bash ma wbudowaną funkcję printf :
printf "%0.2f\n" $T
Jak zawsze, istnieje wiele różnych metod, które można wykorzystać do osiągnięcia tych samych rezultatów wymienionych tutaj.