Я выполняю a find . -name pattern
для нахождения некоторых файлов, и я хотел бы изящно получить общее количество строк в этих файлах.
Как я могу достигнуть этого?
Если Ваша версия 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
К сожалению, вывод:
find . -iname "yourpattern" -exec cat '{}' \; |wc -l
вставляет дополнительные строки. Для получения надежного количества строки, необходимо сделать:
find . -name "yourpattern" -print0 | xargs -0 wc -l
Таким образом, Вы обрабатываете пробелы правильно, получаете счет строки для каждого файла и общего количества строки, быстрее и в стиле!!!
Непротестированный, но как насчет чего-то как:
cat `find . -name "searchterm" -print` | wc -l
$ find . -name '*.txt' -exec cat '{}' \; | wc -l
Берет каждый файл и cat
s это, затем передает все по каналу это через wc
набор к режиму подсчета строки.
Или, [непротестированное] странное безопасное имя файла:
$ find . -name '*.txt' -print0 | xargs -0 cat | wc -l