Intereting Posts
Проверка, является ли входной номер целым числом добавить псевдоним для localhost в / etc / hosts с помощью Augeas Я не могу получить доступ к своему USB-устройству после команды mkfs.ntfs Есть ли какие-либо преимущества использования .qcow2 над .img и который рекомендуется для создания виртуальной машины? Linux Mint не распознается правильно cp переписывание без перезаписи жестких ссылок на место назначения Как я могу заставить udev принимать массовое хранение и отвергать все остальное? Как использовать tune2fs? как поставить очередь на выполнение команды после выполнения другой команды? Не удается войти в систему на удаленном сервере с помощью проверки подлинности с открытым ключом CentOS grub2 загрузка iso через loopback Определить исполняемый файл CLI или Wine в Manjaro Что может вызвать «кроссовер» между двумя веб-камерами USB2 при использовании движения? Могу ли я настроить тачпад ноутбука только для прокрутки? Ext4 – Как включить дополнительные возможности, контрольные суммы, проверки, тесты любого типа?

Сколько строк кода в этом файле?

Я пытаюсь выяснить, сколько строк кода у меня есть для файлов, которые заканчиваются на * .pp

find . -name *.pp -type f | wc -l 39 

Я знаю, что у меня есть 39 файлов, как я могу определить, сколько строк кода содержит эти 39 файлов?

Попробуйте эту версию:

 $ find . -iname "*.pp" -type f -exec wc -l {} + 

Вот пример использования файлов .cpp :

 $ find . -iname "*.cpp" -type f -exec wc -l {} + 229 ./jruby-launcher-1.0.7-java/utilsfuncswin.cpp 269 ./jruby-launcher-1.0.7-java/utilsfuncs.cpp 84 ./jruby-launcher-1.0.7-java/jrubyexe.cpp 85 ./jruby-launcher-1.0.7-java/unixlauncher.cpp 250 ./jruby-launcher-1.0.7-java/platformlauncher.cpp 593 ./jruby-launcher-1.0.7-java/argparser.cpp 452 ./jruby-launcher-1.0.7-java/jvmlauncher.cpp 77 ./jruby-launcher-1.0.7-java/jruby.cpp 2039 total 

Я считаю, что если у вас больше файлов, чем в одном вызове командной строки для wc , это даст вам общее количество за каждый вызов, но это может быть изменено, чтобы в итоге сделать общее количество итогов.

Следующее выполнит работу

 find . -name *.pp -type f -exec wc -l {} \; 

Что не так с помощью команды wc ?
wc -l *.pp даст ожидаемый результат (если все файлы находятся в одной папке, хотя вы можете расширить его, выполнив wc -l FolderA/*.pp FolderB/*.pp )
И если вы только после дедушки, без индивидуальных результатов файла:
find . -name "*.pp" -type f -exec cat {} + | wc -l

@spuder попытался использовать wc в этой команде для подсчета файлов «* .pp»:

 find . -name *.pp -type f | wc -l 

Есть несколько проблем:

  • выражение glob должно быть указано так, чтобы оно передавалось wc
  • wc не открывает имена файлов, переданные в качестве входных данных, и подсчитывает их
  • wc подсчитывает итоговые строки в файле.

ОП не объяснил, какие файлы были. Есть несколько возможностей, наиболее неясных, чем то, что появляется в профиле OP. Учитывая этот профиль, суффикс «.pp» относится к файлам Puppet, которые по сути являются объявлением метаданных в синтаксисе Ruby. Эти файлы могут иметь комментарии (начиная с # ) и пустые строки.

Обычная интерпретация строк кода игнорирует их. Независимо от того, хотите ли вы, физические строки кода (общие строки, игнорирующие комментарии и пустые строки) или исходные строки кода (количество утверждений ), зависят от того, насколько вы решительны.

Синтаксис Puppet более сложный, чем это (он также позволяет комментарии в стиле C и цитирует строки), но, ради примера, вот очень простой фильтр, который обрезает # комментария и пустые строки (используя каталог examples Puppet 2.7 +0,10)

 find . -type f -name "*.pp" -exec sed -e '/^[[:space:]]*#/d' -e '/^[[:space:]]*$/d' {} + |wc -l 429 

в отличие от нефильтрованного:

 find . -type f -name "*.pp" -exec cat {} + |wc -l 477 

Дальнейшее чтение:

  • Справочное руководство по куколку 4.4
  • Стандарт подсчета SLOC (Nguyen, Deeds-Rubin, Tan, Boehm)
  • Различия в определении и вычислении метрики LOC в бесплатных инструментах (Siket, Beszédes, Taylor)