12

I'm running a find . -name pattern to find some files, and I'd like to elegantly get the total number of lines in these files.

How can I achieve that?

6 Answers 6

12

If your version of wc and find support the necessary options:

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

which will give you per-file counts as well as a total. If you want only the total:

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

Another option for versions of find that support it:

find . -name pattern -exec cat {} + | wc -l 
2
$ find . -name '*.txt' -exec cat '{}' \; | wc -l

Takes each file and cats it, then pipes all that through wc set to line counting mode.

Or, [untested] strange filename safe:

$ find . -name '*.txt' -print0 | xargs -0 cat | wc -l
1

Unfortunately the output of :

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

inserts extra lines. In order to get a reliable line count you should do:

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

This way you handle spaces correctly, get a line count for each file, and the total line count, faster and in style!!!

1
  • 1
    e.g. : time find . -name ".m" -exec cat '{}' \; | wc -l runs in 4.878s and returns 227847 as line count . But time find . -name ".m" -print0 | xargs -0 wc -l runs in 0.769s and returns the proper line count 126464 .
    – g24l
    Mar 21, 2011 at 10:53
1

Another easy way to find no. lines in a file:

wc -l filename

Example:

wc -l myfile.txt 
-1

Untested, but how about something like:

cat `find . -name "searchterm" -print` | wc -l
1
  • 1
    This will not work well with paths containing spaces or characters that trigger globbing. Aug 6, 2019 at 20:09
-2
wc -l `find -name filename`

will work efficiently.

2
  • … or not, if paths contain spaces or characters that trigger globbing. Aug 6, 2019 at 20:06
  • And even if it works, this reports the number of lines in each file, which is not an elegant way to get the total (as requested). Aug 7, 2019 at 5:04

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.