Ответ 1
Вероятно, вы хотите:
find . -type f -print0 | wc -l --files0-from=-
Если вам требуется только общее количество строк, вы можете использовать
find . -type f -exec cat {} + | wc -l
Как подсчитать все строки всех файлов во всех подкаталогах с помощью wc
?
cd mydir
wc -l *
..
11723 total
man wc
предлагает wc -l --files0-from=-
, но я не знаю, как сгенерировать список всех файлов как NUL-terminated names
find . -print | wc -l --files0-from=-
не работает.
Вероятно, вы хотите:
find . -type f -print0 | wc -l --files0-from=-
Если вам требуется только общее количество строк, вы можете использовать
find . -type f -exec cat {} + | wc -l
Возможно, вы ищете exec
вариант find
.
find . -type f -exec wc -l {} \; | awk '{total += $1} END {print total}'
Чтобы подсчитать все строки для конкретного расширения файла u, можно использовать
find . -name '*.fileextension' | xargs wc -l
если вы хотите его на двух или более разных типах файлов, вы можете поместить опцию -o
find . -name '*.fileextension1' -o -name '*.fileextension2' | xargs wc -l
Другой вариант - использовать рекурсивный 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
, следовательно, подсчитывает количество строк, соответствующих чему-либо (''), поэтому по существу просто подсчитывает строки.
Я бы предложил что-то вроде
find ./ -type f | xargs wc -l | cut -c 1-8 | awk '{total += $1} END {print total}'
используйте эту команду для подсчета всех файлов в текущем каталоге
wc -l *
Бит поздно в игре здесь, но разве это не сработает? find . -type f | wc -l
Это подсчет всех строк, выводимых командой "Найти". Вы можете точно настроить "найти", чтобы показать все, что захотите. Я использую его для подсчета количества подкаталогов в одном конкретном субдире в глубоком дереве: find ./*/*/*/*/*/*/TOC -type d | wc -l
. Выход: 76435
. (Просто поиск без всех промежуточных звездочек дал ошибку.)