Как считать общее количество строк найденных файлов?

Я выполняю a find . -name pattern для нахождения некоторых файлов, и я хотел бы изящно получить общее количество строк в этих файлах.

Как я могу достигнуть этого?

10
задан 21.08.2011, 09:55

4 ответа

Если Ваша версия wc и find поддерживайте необходимые опции:

find . -name pattern -print0 | wc -l --files0-from=-

который даст Вам количества на файл, а также общее количество. Если Вы хотите только общее количество:

find . -name pattern -print0 | wc -l --files0-from=- | tail -n 1

Другая опция для версий find та поддержка это:

find . -name pattern -exec cat {} + | wc -l 
9
ответ дан 07.12.2019, 12:56

К сожалению, вывод:

find . -iname "yourpattern" -exec cat '{}' \; |wc -l

вставляет дополнительные строки. Для получения надежного количества строки, необходимо сделать:

find . -name "yourpattern" -print0 | xargs -0 wc -l

Таким образом, Вы обрабатываете пробелы правильно, получаете счет строки для каждого файла и общего количества строки, быстрее и в стиле!!!

1
ответ дан 07.12.2019, 12:56

Непротестированный, но как насчет чего-то как:

cat `find . -name "searchterm" -print` | wc -l
-1
ответ дан 07.12.2019, 12:56
$ find . -name '*.txt' -exec cat '{}' \; | wc -l

Берет каждый файл и cats это, затем передает все по каналу это через wc набор к режиму подсчета строки.

Или, [непротестированное] странное безопасное имя файла:

$ find . -name '*.txt' -print0 | xargs -0 cat | wc -l
2
ответ дан 07.12.2019, 12:56

Теги

Похожие вопросы