Сколько строк в каждом файле.
Использование wc
, первоначально для подсчета слов, я считаю, но это может сделать строки, слова, символы, байты и наибольшую длину строки. -l
Опция говорит его подсчет строк.
wc -l <filename>
Это выведет количество строк в:
$ wc -l /dir/file.txt
32724 /dir/file.txt
Вы также можете передать данные в wc
:
$ cat /dir/file.txt | wc -l
32724
$ curl google.com --silent | wc -l
63
Сколько строк в каталоге.
Пытаться:
find . -name '*.pl' | xargs wc -l
еще один вкладыш:
( find ./ -name '*.pl' -print0 | xargs -0 cat ) | wc -l
Кстати, wc
команда считает коды новых строк, а не строк. Если последняя строка в файле не заканчивается кодом новой строки, это не учитывается.
Вы можете использовать grep -c ^, полный пример:
#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
Сколько всего строк
Не уверен, что я правильно понял ваш запрос. например, это выведет результаты в следующем формате, показывающем количество строк для каждого файла:
# wc -l `find /path/to/directory/ -type f`
103 /dir/a.php
378 /dir/b/c.xml
132 /dir/d/e.xml
613 total
В качестве альтернативы, для вывода только общего количества символов новой строки без учета количества файлов для файла может пригодиться следующая команда:
# find /path/to/directory/ -type f -exec wc -l {} \; | awk '{total += $1} END{print total}'
613
Самое главное, мне нужно это в «удобочитаемом формате», например. 12,345,678 вместо 12345678
Bash имеет встроенную функцию printf :
printf "%0.2f\n" $T
Как всегда, есть много разных методов, которые могут быть использованы для достижения тех же результатов, упомянутых здесь.