Подтвердить что ты не робот

Используйте wc во всех подкаталогах для подсчета суммы строк

Как подсчитать все строки всех файлов во всех подкаталогах с помощью wc?

cd mydir
wc -l *
..
11723 total

man wc предлагает wc -l --files0-from=-, но я не знаю, как сгенерировать список всех файлов как NUL-terminated names

find . -print | wc -l --files0-from=-

не работает.

4b9b3361

Ответ 1

Вероятно, вы хотите:

find . -type f -print0 | wc -l --files0-from=-

Если вам требуется только общее количество строк, вы можете использовать

find . -type f -exec cat {} + | wc -l

Ответ 2

Возможно, вы ищете exec вариант find.

find . -type f -exec wc -l {} \; | awk '{total += $1} END {print total}'

Ответ 3

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

find . -name '*.fileextension' | xargs wc -l

если вы хотите его на двух или более разных типах файлов, вы можете поместить опцию -o

find . -name '*.fileextension1' -o -name '*.fileextension2' | xargs wc -l

Ответ 4

Другой вариант - использовать рекурсивный grep:

grep -hRc '' . | awk '{k+=$1}END{print k}'

awk просто добавляет числа. Используемые опции grep:

   -c, --count
          Suppress normal output; instead print a count of matching  lines
          for  each  input  file.  With the -v, --invert-match option (see
          below), count non-matching lines.  (-c is specified by POSIX.)
   -h, --no-filename
          Suppress the prefixing of file names on  output.   This  is  the
          default  when there is only one file (or only standard input) to
          search.
   -R, --dereference-recursive
          Read all files under each directory,  recursively.   Follow  all
          symbolic links, unlike -r.

grep, следовательно, подсчитывает количество строк, соответствующих чему-либо (''), поэтому по существу просто подсчитывает строки.

Ответ 5

Я бы предложил что-то вроде

find ./ -type f | xargs wc -l | cut -c 1-8 | awk '{total += $1} END {print total}'

Ответ 6

используйте эту команду для подсчета всех файлов в текущем каталоге

wc -l *

Ответ 7

Бит поздно в игре здесь, но разве это не сработает? find . -type f | wc -l

Это подсчет всех строк, выводимых командой "Найти". Вы можете точно настроить "найти", чтобы показать все, что захотите. Я использую его для подсчета количества подкаталогов в одном конкретном субдире в глубоком дереве: find ./*/*/*/*/*/*/TOC -type d | wc -l. Выход: 76435. (Просто поиск без всех промежуточных звездочек дал ошибку.)