Подсчёт количества строк в файлах CSS и PHP, рекурсивно в каталоге
                            Временами бывает нужно посчитать количество строк кода в написанном проекте. Для этого Я написал сценарий на “BASH” который считает количество строк во всех файлах с “PHP” и “CSS” расширением найденных в указанном каталоге и его подкаталогах (рекурсивно).
Код написан под поиск “PHP” и “CSS” файлов но может быть легко переделан под другие типы файлов.
Код
Имя: num_lines.sh
Описание: Подсчёт количества строк в CSS и PHP файлах, рекурсивно в каталоге.
Язык: BASH
#!/bin/bash
#=============================================================#
# Name:         Counting the number of lines                  #
# Description:  Counting the number of lines in CSS and PHP   #
#               files, recursively in catalog.                #
# Version:      1.1                                           #
# Data:         7.2.2014-28.10.2014                           #
# Author:       Arthur Gareginyan                             #
# Author URI:   https://www.arthurgareginyan.com              #
# License:      GNU General Public License, version 3 (GPLv3) #
# License URI:  http://www.gnu.org/licenses/gpl-3.0.html      #
#=============================================================#
#                   USAGE:
#       ~/num_lines.sh /example_directory
################### SETUP VARIABLES #######################
place="$1"
################## DECLARE FUNCTIONS ######################
# Поиск файлов PHP и вывод списка
function listPHPFiles() {
	list_php=`find ./ -name "*php"`
	for php_file in $list_php
	do
	        echo $php_file
	done
}
# Поиск файлов CSS и вывод списка
function listCSSFiles() {
	list_css=`find ./ -name "*css"`
	for css_file in $list_css
	do
	        echo $css_file
	done
}
# Подсчёт PHP файлов
function countingPHPFiles() {
	count=$(find ./ -name "*php" | wc -l | sed 's/^ *//')
	PHPFiles=$count
}
# Подсчёт CSS файлов
function countingCSSFiles() {
	count=$(find ./ -name "*css" | wc -l | sed 's/^ *//')
	CSSFiles=$count
}
# Сложение всех строк
function additionFiles() {
	numFiles=$[$PHPFiles+$CSSFiles]
}
# Подсчёт строк в PHP файлах
function countingPHPLines() {
	for php_file in $list_php
	do
	        cmd_php=`awk 'END { print NR }' $php_file`
	        num_php=$[$num_php+$cmd_php]
	done
}
# Подсчёт строк в CSS файлах
function countingCSSLines() {
	for css_file in $list_css
	do
	        cmd_css=`awk 'END { print NR }' $css_file`
	        num_css=$[$num_css+$cmd_css]
	done
}
# Сложение всех строк
function additionLines() {
	numLines=$[$num_php+$num_css]
}
######################## GO ###############################
# Переход в рабочюю директорию
pushd $place >/dev/null 2>&1
echo -e "\nLIST OF All FOUNDED FILES:"
listPHPFiles
listCSSFiles
countingPHPFiles
countingCSSFiles
additionFiles
countingPHPLines
countingCSSLines
additionLines
popd >/dev/null 2>&1
# Результат
echo -e "\nIN $PHPFiles PHP FILES: $num_php lines"
echo -e "IN $CSSFiles CSS FILES: $num_css lines"
echo -e "\nIN ALL $numFiles FILES: $numLines lines"
exit 0
                            Использование
Запустите num_lines.sh с путём к нужной директории:
~/num_lines.sh /example_directory
                            Результат
LIST OF All FOUNDED FILES: .//index.php .//page.php .//style.css IN 2 PHP FILES: 230 lines IN 1 CSS FILES: 292 lines IN ALL 3 FILES: 522 lines
Артур Гарегинян
                            Arthur is a designer and full stack software engineer. He is the founder of Space X-Chimp and the blog My Cyber Universe. His personal website can be found at arthurgareginyan.com.
Следовать за Артур