Я не знаю, какой протокол вы используете, и можете ли вы управлять пунктом назначения, но в этом случае получатель может опросить повторную попытку. Назначение лучше знает, что оно получило, поэтому оно может дать полученное количество байтов как смещение для повторной передачи.
Попробуйте:
find . -name '*.php' | xargs wc -l
Инструмент SLOCCount также может помочь.
Он предоставит точные строки исходного кода рассчитывать на что угодно иерархия, на которую вы указываете, а также некоторую дополнительную статистику.
Отсортированный вывод: find. -name '* .php' | xargs wc -l | sort -nr
очень просто
find /path -type f -name "*.php" | while read FILE
do
count=$(wc -l < $FILE)
echo "$FILE has $count lines"
done
Вы не указали, сколько файлов существует или каков желаемый результат. Это то, что вы ищете:
find . -name '*.php' | xargs wc -l
Есть небольшой инструмент под названием sloccount для подсчета строк кода в каталоге. Следует отметить, что он делает больше, чем вы хотите, поскольку он игнорирует пустые строки / комментарии, группирует результаты по языкам программирования и вычисляет некоторую статистику.
Вам нужен простой цикл for
:
total_count=0
for file in $(find . -name *.php -print)
do
count=$(wc -l $file)
let total_count+=count
done
echo "$total_count"
Для другого однострочника:
( find ./ -name '*.php' -print0 | xargs -0 cat ) | wc -l
работает с именами с пробелами, выводит только одно число.
Вот гибкий с помощью более старого Python (работы, по крайней мере, в Python 2.6) соединяющийся @Shizzmo, прекрасный один лайнер. Просто заполните эти types
список с типами файлов, которые Вы хотите считаемый в исходной папке и стреляете:
#!/usr/bin/python
import subprocess
rcmd = "( find ./ -name '*.%s' -print0 | xargs -0 cat ) | wc -l"
types = ['c','cpp','h','txt']
sum = 0
for el in types:
cmd = rcmd % (el)
p = subprocess.Popen([cmd],stdout=subprocess.PIPE,shell=True)
out = p.stdout.read().strip()
print "*.%s: %s" % (el,out)
sum += int(out)
print "sum: %d" % (sum)
Если Вы хотите считать LOC, Вы записали, Вы, возможно, должны исключить некоторые файлы.
Для проекта Django, можно хотеть проигнорировать migrations
и static
папки. Для проекта JS можно исключить все изображения или все шрифты.
find . \( -path '*/migrations' -o -path '*/.git' -o -path '*/.vscode' -o -path '*/fonts' -o -path '*.png' -o -path '*.jpg' -o -path '*/.github' -o -path '*/static' \) -prune -o -type f -exec cat {} + | wc -l
Использование здесь следующие: */folder_name */.file_extension
Для списка файлов измените более позднюю часть команды:
find . \( -path '*/migrations' -o -path '*/.git' -o -path '*/.vscode' -o -path '*/fonts' -o -path '*.png' -o -path '*.jpg' -o -path '*/.github' -o -path '*/static' \) -prune -o --print