Получить общее количество строк файла в нескольких подкаталогах в каталоге (исключая черные строки) [дубликаты]

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

В настоящее время у меня есть строка кода, которая возвращает мне общее количество строк (включая пустые строки) в файлах одного каталога 'files'

cat /home/user/files/* | wc -l

Есть ли способ реализовать, чтобы я мог вызвать код, который может читать, например:

- /home/user/files/*
- /home/user/files/files2/*
- /home/user/files/files2/files3/*

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

В настоящее время я использую BASH для сценариев, но если есть решение на python, я буду более чем счастлив его использовать.


person carol Alex    schedule 15.09.2016    source источник
comment
@juanpa.arrivillaga Я немного обновил свой вопрос, мне нужно общее количество строк, исключая пустые строки.   -  person carol Alex    schedule 15.09.2016


Ответы (1)


Попробуйте найти все файлы в каталоге рекурсивно (флаг -type f для поиска). Помните, что это также распечатает двоичные файлы, как и ваш текущий код.

find /home/user/files/ -type f -exec cat {} \; | wc -l

Изменить: решение --files-from, приведенное в Используйте wc на все подкаталоги для подсчета суммы строк более эффективны, как указано в комментариях к вопросу

person jedifans    schedule 15.09.2016
comment
спасибо за ваше редактирование. я как раз собирался спросить вас о различиях между вашим решением и решением, приведенным в stackoverflow.com/questions/13727917/ - person carol Alex; 15.09.2016
comment
извиняюсь за то, что не принял ваш ответ, я немного обновил свой вопрос, так как забыл добавить его ранее - мне нужно, чтобы он вернул мне общее количество строк (исключая пустые строки) - person carol Alex; 15.09.2016
comment
Нет проблем. Это файлы кода, которые вы считаете? Если да, то существует довольно много инструментов анализа строк кода (loc) для использования на серверах непрерывной интеграции. - person jedifans; 15.09.2016
comment
да! я по существу пытаюсь подсчитать код. я посмотрю на них. Вы также знаете, как я могу избежать подсчета определенных папок/файлов с ключевыми словами? (т. е. «журнал») - person carol Alex; 15.09.2016
comment
Зависит от инструмента. Некоторые предоставляют варианты для исключения, некоторые нет. Если уж на то пошло, предварительно отфильтровать с помощью find/home/user/files/ -type f ! -path '*/log/*' - person jedifans; 15.09.2016